Skip to content

Hangs when using musl libc #17

@leahneukirchen

Description

@leahneukirchen

When using halfempty 0.40 on Linux 5.9.8/musl 1.1.24/glib 2.66.2 from Void Linux, the test suite gets stuck, e.g. on the grep example.

Valgrind shows that close(-1) is executed, which points me to cleanup_orphaned_tasks.

Sample run with debugging output (limited to one thread for clarity):

G_MESSAGES_DEBUG=all ../halfempty -P 1 --cleanup-threads=1 grep.sh grep.in
$ G_MESSAGES_DEBUG=all ../halfempty -P 1 --cleanup-threads=1 grep.sh grep.in
** (process:18916): DEBUG: 22:49:07.296: configuring default rlimits for child process
** (process:18916): DEBUG: 22:49:07.296: Configured rlimit RLIMIT_CPU => { 18446744073709551615, 18446744073709551615 }
** (process:18916): DEBUG: 22:49:07.296: Configured rlimit RLIMIT_FSIZE => { 18446744073709551615, 18446744073709551615 }
** (process:18916): DEBUG: 22:49:07.296: Configured rlimit RLIMIT_DATA => { 18446744073709551615, 18446744073709551615 }
** (process:18916): DEBUG: 22:49:07.296: Configured rlimit RLIMIT_STACK => { 8388608, 18446744073709551615 }
** (process:18916): DEBUG: 22:49:07.296: Configured rlimit RLIMIT_CORE => { 0, 18446744073709551615 }
** (process:18916): DEBUG: 22:49:07.296: Configured rlimit RLIMIT_RSS => { 18446744073709551615, 18446744073709551615 }
** (process:18916): DEBUG: 22:49:07.296: Configured rlimit RLIMIT_NPROC => { 62081, 62081 }
** (process:18916): DEBUG: 22:49:07.296: Configured rlimit RLIMIT_NOFILE => { 4096, 4096 }
** (process:18916): DEBUG: 22:49:07.296: Configured rlimit RLIMIT_MEMLOCK => { 65536, 65536 }
** (process:18916): DEBUG: 22:49:07.296: Configured rlimit RLIMIT_AS => { 18446744073709551615, 18446744073709551615 }
** (process:18916): DEBUG: 22:49:07.296: Configured rlimit RLIMIT_LOCKS => { 18446744073709551615, 18446744073709551615 }
** (process:18916): DEBUG: 22:49:07.297: Configured rlimit RLIMIT_SIGPENDING => { 62081, 62081 }
** (process:18916): DEBUG: 22:49:07.297: Configured rlimit RLIMIT_MSGQUEUE => { 819200, 819200 }
** (process:18916): DEBUG: 22:49:07.297: Configured rlimit RLIMIT_NICE => { 0, 0 }
** (process:18916): DEBUG: 22:49:07.297: Configured rlimit RLIMIT_RTPRIO => { 0, 0 }
** INFO: 22:49:07.297: Initializing 2 strategies...
** INFO: 22:49:07.297: Strategy 1: "bisect", Remove consecutively larger chunks of data from the file
** INFO: 22:49:07.297: Strategy 2: "zero", Zero consecutively larger chunks of data from the file
╭│   │ ── halfempty ───────────────────────────────────────────────── v0.40 ──
╰│  8│ A fast, parallel testcase minimization tool
 ╰───╯ ───────────────────────────────────────────────────────── by @taviso ──

Input file "grep.in" is now 1191359 bytes, starting strategy "bisect"...
Verifying the original input executes successfully... (skip with --noverify)
** (halfempty:18916): DEBUG: 22:49:07.298: thread 0x55b2a74dce60 processing task 0x55b2a74dcce0, size 1191359, fd 3, status TASK_STATUS_PENDING
** (halfempty:18916): DEBUG: 22:49:07.299: writing data to child 18918 pipefd=5
** (halfempty:18916): DEBUG: 22:49:07.302: Broken pipe received from 18916
** (halfempty:18916): DEBUG: 22:49:07.302: failed to splice all data into pipe, 1191359 remaining
** (halfempty:18916): DEBUG: 22:49:07.302: finished writing data to child, about to waitid(18918)
** (halfempty:18916): DEBUG: 22:49:07.302: child 18918 exited with code 0
** (halfempty:18916): DEBUG: 22:49:07.302: thread 0x55b2a74dce60, child returned 0 after 0.004 seconds, size 1191359
** (halfempty:18916): DEBUG: 22:49:07.302: task 0x55b2a74dcce0 success, aborting mispredicted jobs
** (halfempty:18916): DEBUG: 22:49:07.302: abort_pending_tasks() called, but no child nodes to traverse
** INFO: 22:49:07.302: thread 0x55b2a74dce60 found task 0x55b2a74dcce0 succeeded after 0.004 seconds, size 1191359, depth 1
** (halfempty:18916): DEBUG: 22:49:07.302: thread 0x55b2a74dce60 completed workunit 0x55b2a74dcce0
The original input file succeeded after 0.0 seconds.
(halfempty:18916): bisect-DEBUG: 22:49:07.303: strategy_bisect_data(0x55b2a74dce00)
(halfempty:18916): bisect-DEBUG: 22:49:07.303: initializing a new root node size 1191359
** (halfempty:18916): DEBUG: 22:49:07.303: generator thread obtained treelock, finding next leaf
New finalized size: 1191359 (depth=2) real=0.0s, user=0.0s, speedup=~-0.0s
** (halfempty:18916): DEBUG: 22:49:07.303: found a TASK_STATUS_SUCCESS task, size 1191359 
(halfempty:18916): bisect-DEBUG: 22:49:07.303: strategy_bisect_data(0x55b2a74dce00)
(halfempty:18916): bisect-DEBUG: 22:49:07.303: parent succeeded, not incrementing offset from 0
(halfempty:18916): bisect-DEBUG: 22:49:07.303: creating task for 0x55b2a74dce00 with parent 0x55b2a74dcce0 and source 0x55b2a74dcce0
** (halfempty:18916): DEBUG: 22:49:07.303: node is a leaf node, generating children
** (halfempty:18916): DEBUG: 22:49:07.303: generator thread releasing tree lock
** (halfempty:18916): DEBUG: 22:49:07.303: generator thread obtained treelock, finding next leaf
** (halfempty:18916): DEBUG: 22:49:07.303: thread 0x7f7c167af460 processing task 0x55b2a74dd940, size 0, fd 4, status TASK_STATUS_PENDING
** (halfempty:18916): DEBUG: 22:49:07.304: found a TASK_STATUS_SUCCESS task, size 1191359 
** (halfempty:18916): DEBUG: 22:49:07.304: node is not a leaf, traversing
** (halfempty:18916): DEBUG: 22:49:07.304:  found a TASK_STATUS_PENDING task, size 0 
(halfempty:18916): bisect-DEBUG: 22:49:07.304: strategy_bisect_data(0x55b2a74dcec0)
bisect-INFO: 22:49:07.304: reached end of cycle (offset 0 + chunksize 1191359 > size 0)
(halfempty:18916): bisect-DEBUG: 22:49:07.304: creating task for 0x55b2a74dcec0 with parent 0x55b2a74dd940 and source 0x55b2a74dcce0
** (halfempty:18916): DEBUG: 22:49:07.305: writing data to child 18920 pipefd=6
** (halfempty:18916): DEBUG: 22:49:07.305: finished writing data to child, about to waitid(18920)
** (halfempty:18916): DEBUG: 22:49:07.307: child 18920 exited with code 1
** (halfempty:18916): DEBUG: 22:49:07.307: thread 0x7f7c167af460, child returned 1 after 0.004 seconds, size 0
** (halfempty:18916): DEBUG: 22:49:07.307: task 0x55b2a74dd940 failed, fd 4, pid 18920
** (halfempty:18916): DEBUG: 22:49:07.308: thread 0x7f7c167af460 completed workunit 0x55b2a74dd940
** (halfempty:18916): DEBUG: 22:49:07.308: thread 0x7f7c166826a0 cleaning up task 0x55b2a74dd940 (pid=18920), now attempting to lock
** (halfempty:18916): DEBUG: 22:49:07.308: thread 0x7f7c166826a0 acquired lock on task 0x55b2a74dd940, state TASK_STATUS_FAILURE
** (halfempty:18916): DEBUG: 22:49:07.308: task 0x55b2a74dd940 unlocked by 0x7f7c166826a0, now discarded
** (halfempty:18916): DEBUG: 22:49:07.311:  node is a leaf node, generating children
** (halfempty:18916): DEBUG: 22:49:07.311: generator thread releasing tree lock
** (halfempty:18916): DEBUG: 22:49:07.311: generator thread obtained treelock, finding next leaf
** (halfempty:18916): DEBUG: 22:49:07.311: thread 0x7f7c167af460 processing task 0x55b2a74dd9a0, size 595680, fd 8, status TASK_STATUS_PENDING
** (halfempty:18916): DEBUG: 22:49:07.312: found a TASK_STATUS_SUCCESS task, size 1191359 
** (halfempty:18916): DEBUG: 22:49:07.312: node is not a leaf, traversing
** (halfempty:18916): DEBUG: 22:49:07.312:  found a TASK_STATUS_FAILURE task, size 0 
** (halfempty:18916): DEBUG: 22:49:07.312:  node is not a leaf, traversing
** (halfempty:18916): DEBUG: 22:49:07.312:   found a TASK_STATUS_PENDING task, size 595680 
(halfempty:18916): bisect-DEBUG: 22:49:07.313: strategy_bisect_data(0x55b2a74dcef0)
(halfempty:18916): bisect-DEBUG: 22:49:07.313: parent failed or pending, trying next offset 0 => 595679
(halfempty:18916): bisect-DEBUG: 22:49:07.313: creating task for 0x55b2a74dcef0 with parent 0x55b2a74dd9a0 and source 0x55b2a74dcce0
** (halfempty:18916): DEBUG: 22:49:07.322:   node is a leaf node, generating children
** (halfempty:18916): DEBUG: 22:49:07.322: generator thread releasing tree lock
** (halfempty:18916): DEBUG: 22:49:07.322: generator thread obtained treelock, finding next leaf
** (halfempty:18916): DEBUG: 22:49:07.322: found a TASK_STATUS_SUCCESS task, size 1191359 
** (halfempty:18916): DEBUG: 22:49:07.322: node is not a leaf, traversing
** (halfempty:18916): DEBUG: 22:49:07.322:  found a TASK_STATUS_FAILURE task, size 0 
** (halfempty:18916): DEBUG: 22:49:07.322:  node is not a leaf, traversing
** (halfempty:18916): DEBUG: 22:49:07.322:   found a TASK_STATUS_PENDING task, size 595680 
** (halfempty:18916): DEBUG: 22:49:07.322:   node is not a leaf, traversing
** (halfempty:18916): DEBUG: 22:49:07.322:    found a TASK_STATUS_PENDING task, size 595680 
(halfempty:18916): bisect-DEBUG: 22:49:07.323: strategy_bisect_data(0x55b2a74dcf50)
bisect-INFO: 22:49:07.323: reached end of cycle (offset 595679 + chunksize 595679 > size 595680)
(halfempty:18916): bisect-DEBUG: 22:49:07.323: creating task for 0x55b2a74dcf50 with parent 0x55b2a74e1300 and source 0x55b2a74dcce0
** (halfempty:18916): DEBUG: 22:49:07.333:    node is a leaf node, generating children
** (halfempty:18916): DEBUG: 22:49:07.333: generator thread releasing tree lock
** (halfempty:18916): DEBUG: 22:49:07.333: generator thread obtained treelock, finding next leaf
** (halfempty:18916): DEBUG: 22:49:07.333: found a TASK_STATUS_SUCCESS task, size 1191359 
** (halfempty:18916): DEBUG: 22:49:07.333: node is not a leaf, traversing
** (halfempty:18916): DEBUG: 22:49:07.333:  found a TASK_STATUS_FAILURE task, size 0 
** (halfempty:18916): DEBUG: 22:49:07.334:  node is not a leaf, traversing
** (halfempty:18916): DEBUG: 22:49:07.334:   found a TASK_STATUS_PENDING task, size 595680 
** (halfempty:18916): DEBUG: 22:49:07.334:   node is not a leaf, traversing
** (halfempty:18916): DEBUG: 22:49:07.334:    found a TASK_STATUS_PENDING task, size 595680 
** (halfempty:18916): DEBUG: 22:49:07.334:    node is not a leaf, traversing
** (halfempty:18916): DEBUG: 22:49:07.334:     found a TASK_STATUS_PENDING task, size 893520 
(halfempty:18916): bisect-DEBUG: 22:49:07.334: strategy_bisect_data(0x55b2a74dd210)
(halfempty:18916): bisect-DEBUG: 22:49:07.334: parent failed or pending, trying next offset 0 => 297839
(halfempty:18916): bisect-DEBUG: 22:49:07.334: creating task for 0x55b2a74dd210 with parent 0x55b2a74e1360 and source 0x55b2a74dcce0
** (halfempty:18916): DEBUG: 22:49:07.339:     node is a leaf node, generating children
** (halfempty:18916): DEBUG: 22:49:07.339: generator thread releasing tree lock

Interestingly, under valgrind it manages to finish, but does these invalid close calls (which also seem to occur on glibc!):

valgrind ../halfempty -P 1 --cleanup-threads=1 grep.sh grep.in
valgrind ../halfempty -P 1 --cleanup-threads=1 grep.sh grep.in
==19081== Memcheck, a memory error detector
==19081== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==19081== Using Valgrind-3.16.1 and LibVEX; rerun with -h for copyright info
==19081== Command: ../halfempty -P 1 --cleanup-threads=1 grep.sh grep.in
==19081== 
╭│   │ ── halfempty ───────────────────────────────────────────────── v0.40 ──
╰│  8│ A fast, parallel testcase minimization tool
 ╰───╯ ───────────────────────────────────────────────────────── by @taviso ──

Input file "grep.in" is now 1191359 bytes, starting strategy "bisect"...
--19081-- WARNING: unhandled amd64-linux syscall: 315
--19081-- You may be able to write your own handler.
--19081-- Read the file README_MISSING_SYSCALL_OR_IOCTL.
--19081-- Nevertheless we consider this a bug.  Please report
--19081-- it at http://valgrind.org/support/bug_reports.html.
Verifying the original input executes successfully... (skip with --noverify)
The original input file succeeded after 0.0 seconds.
New finalized size: 1191359 (depth=2) real=0.0s, user=0.0s, speedup=~-0.0s
New finalized size: 595680 (depth=5) real=0.1s, user=0.0s, speedup=~-0.0s
New finalized size: 297841 (depth=7) real=0.1s, user=0.1s, speedup=~-0.0s
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
New finalized size: 148922 (depth=9) real=0.2s, user=0.1s, speedup=~-0.1s
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
New finalized size: 74463 (depth=11) real=0.3s, user=0.1s, speedup=~-0.1s
New finalized size: 37234 (depth=13) real=0.3s, user=0.2s, speedup=~-0.1s
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
New finalized size: 18620 (depth=14) real=0.4s, user=0.2s, speedup=~-0.2s
New finalized size: 9313 (depth=17) real=0.5s, user=0.2s, speedup=~-0.2s
New finalized size: 4660 (depth=19) real=0.5s, user=0.3s, speedup=~-0.2s
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
New finalized size: 2334 (depth=20) real=0.6s, user=0.3s, speedup=~-0.2s
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
New finalized size: 1171 (depth=23) real=0.7s, user=0.4s, speedup=~-0.3s
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
New finalized size: 590 (depth=25) real=0.8s, user=0.4s, speedup=~-0.3s
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
New finalized size: 300 (depth=26) real=0.9s, user=0.4s, speedup=~-0.4s
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
New finalized size: 155 (depth=29) real=1.0s, user=0.5s, speedup=~-0.5s
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
New finalized size: 83 (depth=30) real=1.0s, user=0.5s, speedup=~-0.5s
==19081== Warning: invalid file descriptor -1 in syscall close()
New finalized size: 47 (depth=33) real=1.1s, user=0.5s, speedup=~-0.5s
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
New finalized size: 29 (depth=34) real=1.2s, user=0.6s, speedup=~-0.6s
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
New finalized size: 20 (depth=37) real=1.3s, user=0.6s, speedup=~-0.6s
New finalized size: 11 (depth=38) real=1.3s, user=0.6s, speedup=~-0.6s
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
New finalized size: 9 (depth=45) real=1.5s, user=0.7s, speedup=~-0.7s
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
New finalized size: 8 (depth=46) real=1.5s, user=0.8s, speedup=~-0.7s
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
New finalized size: 7 (depth=53) real=1.7s, user=0.9s, speedup=~-0.7s
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
Reached the end of our path through tree, all nodes were finalized
45 nodes failed, 44 worked, 21 discarded, 1 collapsed
1.636 seconds of compute was required for final path
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()

Strategy "bisect" complete, output 7 bytes
Input file "grep.in" is now 7 bytes, starting strategy "zero"...
Verifying the original input executes successfully... (skip with --noverify)
The original input file succeeded after 0.0 seconds.
New finalized size: 7 (depth=2) real=0.0s, user=0.0s, speedup=~-0.0s
New finalized size: 7 (depth=5) real=0.0s, user=0.0s, speedup=~-0.0s
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
Reached the end of our path through tree, all nodes were finalized
11 nodes failed, 2 worked, 0 discarded, 1 collapsed
0.230 seconds of compute was required for final path
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()
==19081== Warning: invalid file descriptor -1 in syscall close()

Strategy "zero" complete, output 7 bytes
All work complete, generating output halfempty.out (size: 7)
==19081== 
==19081== HEAP SUMMARY:
==19081==     in use at exit: 24,758 bytes in 37 blocks
==19081==   total heap usage: 9,966 allocs, 9,929 frees, 538,679 bytes allocated
==19081== 
==19081== LEAK SUMMARY:
==19081==    definitely lost: 0 bytes in 0 blocks
==19081==    indirectly lost: 0 bytes in 0 blocks
==19081==      possibly lost: 0 bytes in 0 blocks
==19081==    still reachable: 24,758 bytes in 37 blocks
==19081==         suppressed: 0 bytes in 0 blocks
==19081== Rerun with --leak-check=full to see details of leaked memory
==19081== 
==19081== For lists of detected and suppressed errors, rerun with: -s
==19081== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

I hope this is enough detail for someone familiar with the code to debug it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions