Skip to content

unsafe pointer conversion on Linux #330

@cpuguy83

Description

@cpuguy83

When testing with -race from go1.14 we see a new error in this line of code:

bytes := (*[unix.PathMax]byte)(unsafe.Pointer(&buf[offset+unix.SizeofInotifyEvent]))

$ go test --race ./...

fatal error: checkptr: unsafe pointer conversion

goroutine 50 [running]:

runtime.throw(0x6386c3, 0x23)

	/home/travis/.gimme/versions/go1.14.linux.amd64/src/runtime/panic.go:1112 +0x72 fp=0xc000055b38 sp=0xc000055b08 pc=0x4600a2

runtime.checkptrAlignment(0xc00023b010, 0x5f9be0, 0x1)

	/home/travis/.gimme/versions/go1.14.linux.amd64/src/runtime/checkptr.go:18 +0xb7 fp=0xc000055b68 sp=0xc000055b38 pc=0x433537

github.com/fsnotify/fsnotify.(*Watcher).readEvents(0xc000088410)

	/home/travis/gopath/src/github.com/fsnotify/fsnotify/inotify.go:275 +0x5e5 fp=0xc000055fd8 sp=0xc000055b68 pc=0x5c96d5

runtime.goexit()

	/home/travis/.gimme/versions/go1.14.linux.amd64/src/runtime/asm_amd64.s:1373 +0x1 fp=0xc000055fe0 sp=0xc000055fd8 pc=0x493511

created by github.com/fsnotify/fsnotify.NewWatcher

	/home/travis/gopath/src/github.com/fsnotify/fsnotify/inotify.go:59 +0x31d

goroutine 1 [chan receive]:

testing.(*T).Run(0xc0000d2000, 0x633ea4, 0x13, 0x63c3a0, 0x1)

	/home/travis/.gimme/versions/go1.14.linux.amd64/src/testing/testing.go:1044 +0x699

testing.runTests.func1(0xc0000d2000)

	/home/travis/.gimme/versions/go1.14.linux.amd64/src/testing/testing.go:1285 +0xa7

testing.tRunner(0xc0000d2000, 0xc0000b3d50)

	/home/travis/.gimme/versions/go1.14.linux.amd64/src/testing/testing.go:992 +0x1ec

testing.runTests(0xc0000bc020, 0x7a18c0, 0x23, 0x23, 0x0)

	/home/travis/.gimme/versions/go1.14.linux.amd64/src/testing/testing.go:1283 +0x528

testing.(*M).Run(0xc0000ce000, 0x0)

	/home/travis/.gimme/versions/go1.14.linux.amd64/src/testing/testing.go:1200 +0x300

main.main()

	_testmain.go:112 +0x224

goroutine 24 [chan receive]:

testing.(*T).Parallel(0xc0000d2480)

	/home/travis/.gimme/versions/go1.14.linux.amd64/src/testing/testing.go:867 +0x3b7

github.com/fsnotify/fsnotify.TestWatcherClose(0xc0000d2480)

	/home/travis/gopath/src/github.com/fsnotify/fsnotify/fsnotify_test.go:50 +0x40

testing.tRunner(0xc0000d2480, 0x63c428)

	/home/travis/.gimme/versions/go1.14.linux.amd64/src/testing/testing.go:992 +0x1ec

created by testing.(*T).Run

	/home/travis/.gimme/versions/go1.14.linux.amd64/src/testing/testing.go:1043 +0x661

goroutine 33 [select]:

github.com/fsnotify/fsnotify.TestInotifyOverflow(0xc0000d2900)

	/home/travis/gopath/src/github.com/fsnotify/fsnotify/inotify_test.go:426 +0x840

testing.tRunner(0xc0000d2900, 0x63c3a0)

	/home/travis/.gimme/versions/go1.14.linux.amd64/src/testing/testing.go:992 +0x1ec

created by testing.(*T).Run

	/home/travis/.gimme/versions/go1.14.linux.amd64/src/testing/testing.go:1043 +0x661

FAIL	github.com/fsnotify/fsnotify	3.951s

FAIL

The command "go test --race ./..." exited with 1.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions