andrewrk / poop

Performance Optimizer Observation Platform
MIT License
788 stars 50 forks source link

Zig standard library tests deadlock when run via `poop` #43

Open squeek502 opened 10 months ago

squeek502 commented 10 months ago
$ zig test lib/std/std.zig --zig-lib-dir lib --main-pkg-path lib/std --test-no-exec -femit-bin=test
$ poop ./test

Deadlocks for me when trying to print progress. Stacktrace from gdb:

(gdb) backtrace
#0  0x00000000011370db in os.linux.x86_64.syscall3 (number=write, arg1=2, arg2=140724114992364, arg3=4) at /home/ryan/Programming/zig/zig/lib/std/os/linux/x86_64.zig:46
#1  0x0000000001138ff6 in os.linux.write (fd=2, buf=0x7ffce2e2acec "1541\001", count=4) at /home/ryan/Programming/zig/zig/lib/std/os/linux.zig:633
#2  0x0000000000ddded1 in os.write (fd=2, bytes=...) at /home/ryan/Programming/zig/zig/lib/std/os.zig:1133
#3  0x0000000000c9a96b in fs.file.File.write (self=..., bytes=...) at /home/ryan/Programming/zig/zig/lib/std/fs/file.zig:1163
#4  0x000000000082eed9 in io.writer.Writer(fs.file.File,error{DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,AccessDenied,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer,Unexpected},(function 'write')).write (self=<error reading variable: Cannot access memory at address 0x4>, bytes=...)
    at /home/ryan/Programming/zig/zig/lib/std/io/writer.zig:17
#5  0x000000000081edee in io.writer.Writer(fs.file.File,error{DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,AccessDenied,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer,Unexpected},(function 'write')).writeAll (self=..., bytes=...)
    at /home/ryan/Programming/zig/zig/lib/std/io/writer.zig:23
#6  0x0000000000c9aa89 in fmt.formatBuf__anon_66211 (buf=..., options=..., writer=...) at /home/ryan/Programming/zig/zig/lib/std/fmt.zig:1047
#7  0x0000000000cf0e66 in fmt.formatInt__anon_68567 (value=1541, base=10 '\n', case=lower, options=..., writer=...) at /home/ryan/Programming/zig/zig/lib/std/fmt.zig:1460
#8  0x0000000001135296 in fmt.formatIntValue__anon_241031 (value=1541, options=<error reading variable: Cannot access memory at address 0x4>, 
    writer=<error reading variable: Cannot access memory at address 0x40>) at /home/ryan/Programming/zig/zig/lib/std/fmt.zig:784
#9  0x00000000011352d5 in fmt.formatValue__anon_241030 (value=1541, options=<error reading variable: Cannot access memory at address 0x4>, writer=...)
    at /home/ryan/Programming/zig/zig/lib/std/fmt.zig:733
#10 0x0000000000dda2d9 in fmt.formatType__anon_74949 (value=1541, options=<error reading variable: Cannot access memory at address 0x4>, writer=..., max_depth=3)
    at /home/ryan/Programming/zig/zig/lib/std/fmt.zig:487
#11 0x00000000011597a7 in fmt.format__anon_241736 (writer=..., args=...) at /home/ryan/Programming/zig/zig/lib/std/fmt.zig:184
#12 0x0000000000de7911 in io.writer.Writer(fs.file.File,error{DiskQuota,FileTooBig,InputOutput,NoSpaceLeft,DeviceBusy,InvalidArgument,AccessDenied,BrokenPipe,SystemResources,OperationAborted,NotOpenForWriting,LockViolation,WouldBlock,ConnectionResetByPeer,Unexpected},(function 'write')).print__anon_75732 (self=..., 
    args=<error reading variable: Cannot access memory at address 0x4>) at /home/ryan/Programming/zig/zig/lib/std/io/writer.zig:28
#13 0x0000000000cefded in debug.print__anon_68538 (args=...) at /home/ryan/Programming/zig/zig/lib/std/debug.zig:88
#14 0x000000000083ca3a in test_runner.mainTerminal () at test_runner.zig:164
#15 0x0000000000826a7b in test_runner.main () at test_runner.zig:36
#16 0x000000000080e3dd in start.posixCallMainAndExit () at /home/ryan/Programming/zig/zig/lib/std/start.zig:369
#17 0x000000000080df32 in _start () at /home/ryan/Programming/zig/zig/lib/std/start.zig:251

Works fine when run via hyperfine, so I'm considering this a poop bug rather than a Zig bug.