I have a package that is dependent on
bazil.org/fuse for testing via a
sysfs simulation package
github.com/ev3go/sisyphus.
For historical reasons, the travis testing used the -a flag (since
removed because of the issue described here).
Since Go1.14, the standard runtime tests on travis passed, but the
-race tests hang. This is replicable on my local hardware (requiring a
reboot to continue working on the codebase since a fuse mount remains
after the hang, preventing access to the code directory).
Running tests on either
bazil.org/fuse or the intermediate dependency
the same way does not cause the hang. This suggests to me that I'm
probably doing something wrong with a lock and I'm deadlocking the fuse
system in the kernel.
However, when I remove the -a flag from the go test -race invocation,
the tests complete and there is no complaint about data races. Nor does
the hang happen with Go versions prior to Go1.14.
Can anyone suggest why -a has this effect? or what has changed between
1.13 and 1.14 that might cause this? (Bisecting would be painful since
it requires a reboot between iterations).
The repository in question is
github.com/ev3go/ev3dev and the PR that
illustrates the issue is
https://github.com/ev3go/ev3dev/pull/90.
thanks
Dan