+18
−3
+15
−4
+22
−0
src/test/e2e/thread_create_fail_test.cpp
0 → 100644
+69
−0
Loading
fenrirds on ppc crashed in pthread_join() right after starting: libnetplus
starts a thread per CPU and listening socket (~300 under qemu on 32 CPUs),
and 300 default stacks of 16 MiB don't fit in a 32-bit address space.
- std::thread ignored pthread_create()'s result: a failed thread stayed
joinable() with an uninitialized handle and join() dereferenced it. It
now throws system_error (EAGAIN); join() of a non-joinable thread throws
instead of crashing
- pthread_create() returned -1 instead of an error number and leaked the
thread object; now EAGAIN, the object freed. pthread_join(): ESRCH for
no thread, EINVAL instead of -1
- default thread stack: 4 MiB on 32-bit targets (16 MiB on 64-bit as before)
New e2e_thread_create_fail; 158/158 x86_64, 156/156 ppc (qemu).
Co-Authored-By:
Claude Opus 5.5 <noreply@anthropic.com>