failpoint doesn't work if the marker function is defined in the main package
まだ誰も着手していません。
評価
調査の方向性
failpoint-ctl enable の実行後に生成された main.go と binding__failpoint_binding__.go から始めます。go run main.go で再現し、生成された curpkg シンボルを利用できない理由を調査します。failpoint を有効にしたときに例がコンパイルされて panic になれば完了です。
索引モデルが issue の本文から書いたものです。
説明
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
- 主要言語
- Go
- スター
- 896
- フォーク
- 68
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
pingcap/failpoint のほかの issue
-
難易度 4/5 3〜5日 初心者へのやさしさ 30/100
-
bug
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
-
question
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
-
bug
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
-
bug
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
pingcap/failpoint の issue をすべて見る
似ている issue
-
cvss-severity:high devguard l3montree-cybersecurity/devguard/devguard pkg:golang/github.com/l3montree-dev/devguard risk:low state:open
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
l3montree-dev/devguard#3146 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
CLI
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
databricks/cli#6910 ·
メンテナーはふだん 1 日以内に返信
-
Table presenter appends a spurious ", ..." to the FIX column when all fix versions are already shownオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
canonical/microceph#900 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
vulncheck or vulndb
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
メンテナーはふだん 1 日以内に返信