failpoint doesn't work if the marker function is defined in the main package
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
Inizia con main.go e il binding__failpoint_binding__.go generato dopo aver eseguito failpoint-ctl enable. Riproduci il problema con go run main.go e analizza perché il simbolo curpkg generato non è disponibile. Il lavoro è completo quando l’esempio viene compilato e va in panic quando il failpoint è abilitato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Bug Report
Please answer these questions before submitting your issue. Thanks!
- What did you do? If possible, provide a recipe for reproducing the error.
For example, we have a file named main.go:
package main
import (
"github.com/pingcap/failpoint"
)
func F1(name string) string {
failpoint.Inject("failpoint-name", nil)
return "hello " + name
}
func main() {
failpoint.Enable("failpoint-name", "panic")
F1("ttt")
}
After transfrom the code with failpoint-ctl enable, the generated binding__failpoint_binding__.go looks like this:
package main
import "reflect"
type __failpointBindingType struct {pkgpath string}
var __failpointBindingCache = &__failpointBindingType{}
func init() {
__failpointBindingCache.pkgpath = reflect.TypeOf(__failpointBindingType{}).PkgPath()
}
func _curpkg_(name string) string {
return __failpointBindingCache.pkgpath + "/" + name
}
You may notice that binding__failpoint_binding__.go is also in package main, that means binding__failpoint_binding__.go could not be found by main.go.
Run go run main.go then, you will find the following error:
./main.go:8:17: undefined: _curpkg_
- What did you expect to see?
program panics due to failpoint
- What did you see instead?
./main.go:8:17: undefined: _curpkg_
- Versions of the failpoint
$ ./bin/failpoint-ctl -V
ReleaseVersion bf45ab2
BuildTS 2019-05-15 09:48:44
GitHash bf45ab20bfc48d624b61944a4820768c16d7db99
GitBranch master
GoVersion go version go1.12 darwin/amd64
- Lingua principale
- Go
- Stelle
- 896
- Fork
- 69
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di pingcap/failpoint
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
-
expect `Enable()` inTerm:'off' does not trigger failpoint code, but it's not as expectForse già presa @1fanwang l’ha presa 20 giorni fa. Apertabug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
-
question
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
-
bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
-
bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
Tutte le issue di pingcap/failpoint
Issue simili
-
bug frontend good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno
-
trust: update-propagation-directive requires developer mode while add and remove do notForse già presa @bhuvan-somisetty l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
oalders/clodhopper#133 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
peasant-labs/peasant#596 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
hatchet-dev/hatchet#5179 ·
I maintainer di solito rispondono entro 1 giorno