On Tue, Nov 15, 2022 at 3:05 PM Steven Robbins <st...@sumost.ca> wrote: > > On Tuesday, November 15, 2022 7:44:13 A.M. CST Mathieu Malaterre wrote: > > > jpeg-xl unit tests cannot be run on GNU/Hurd. It seems to be stuck for > > infinite time. > > That is curious. It would help greatly if you had a minimal example.
Looks like an Heisenbug. Sometime I can reproduce it some time not. So if you are luck in gdb you can reproduce the infinite loop behavior (as if stuck): (gdb) r Starting program: /home/malat/jpeg-xl-0.7.0/obj-i686-gnu/lib/tests/codec_test "--gtest_filter=CodecTest.TestRoundTrip" Running main() from ./googletest/src/gtest_main.cc Note: Google Test filter = CodecTest.TestRoundTrip [==========] Running 1 test from 1 test suite. [----------] Global test environment set-up. [----------] 1 test from CodecTest [ RUN ] CodecTest.TestRoundTrip ^C[New Thread 29923.13] [New Thread 29923.14] [New Thread 29923.15] [New Thread 29923.16] [New Thread 29923.17] [New Thread 29923.18] [New Thread 29923.19] [New Thread 29923.20] [New Thread 29923.21] [New Thread 29923.22] [New Thread 29923.23] [New Thread 29923.24] [New Thread 29923.25] Thread 4 received signal SIGINT, Interrupt. 0x0189c7ac in ?? () from /lib/i386-gnu/libc.so.0.3 (gdb) bt #0 0x0189c7ac in ?? () from /lib/i386-gnu/libc.so.0.3 #1 0x0189cf60 in mach_msg () from /lib/i386-gnu/libc.so.0.3 #2 0x01876e7c in ?? () from /lib/i386-gnu/libpthread.so.0.3 #3 0x018755f0 in pthread_cond_broadcast () from /lib/i386-gnu/libpthread.so.0.3 #4 0x015ef8c8 in std::condition_variable::notify_all() () from /lib/i386-gnu/libstdc++.so.6 #5 0x08096e1b in jpegxl::ThreadParallelRunner::StartWorkers (worker_command=18446744073709551613, this=0x1037620) at ./lib/threads/thread_parallel_runner_internal.h:136 #6 jpegxl::ThreadParallelRunner::RunOnEachThread<jpegxl::ThreadParallelRunner::ThreadParallelRunner(int)::<lambda(int, int)> > (func=..., this=0x1037620) at ./lib/threads/thread_parallel_runner_internal.h:90 #7 jpegxl::ThreadParallelRunner::ThreadParallelRunner (this=<optimized out>, num_worker_threads=<optimized out>) at ./lib/threads/thread_parallel_runner_internal.cc:199 #8 0x08050998 in jxl::ThreadPoolInternal::ThreadPoolInternal (num_worker_threads=<optimized out>, this=<optimized out>) at ./lib/jxl/base/thread_pool_internal.h:33 #9 jxl::extras::(anonymous namespace)::CodecTest_TestRoundTrip_Test::TestBody (this=<optimized out>) at ./lib/extras/codec_test.cc:272 #10 0x082c9a8a in void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) () #11 0x082b9717 in testing::Test::Run() () #12 0x082b9919 in testing::TestInfo::Run() () #13 0x082b9e87 in testing::TestSuite::Run() () #14 0x082bf935 in testing::internal::UnitTestImpl::RunAllTests() () #15 0x082ca00a in bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) () #16 0x082b9a00 in testing::UnitTest::Run() () #17 0x0804a033 in main () (gdb) bt full #0 0x0189c7ac in ?? () from /lib/i386-gnu/libc.so.0.3 No symbol table info available. #1 0x0189cf60 in mach_msg () from /lib/i386-gnu/libc.so.0.3 No symbol table info available. #2 0x01876e7c in ?? () from /lib/i386-gnu/libpthread.so.0.3 No symbol table info available. #3 0x018755f0 in pthread_cond_broadcast () from /lib/i386-gnu/libpthread.so.0.3 No symbol table info available. #4 0x015ef8c8 in std::condition_variable::notify_all() () from /lib/i386-gnu/libstdc++.so.6 No symbol table info available. #5 0x08096e1b in jpegxl::ThreadParallelRunner::StartWorkers (worker_command=18446744073709551613, this=0x1037620) at ./lib/threads/thread_parallel_runner_internal.h:136 No locals. #6 jpegxl::ThreadParallelRunner::RunOnEachThread<jpegxl::ThreadParallelRunner::ThreadParallelRunner(int)::<lambda(int, int)> > (func=..., this=0x1037620) at ./lib/threads/thread_parallel_runner_internal.h:90 thread = <optimized out> #7 jpegxl::ThreadParallelRunner::ThreadParallelRunner (this=<optimized out>, num_worker_threads=<optimized out>) at ./lib/threads/thread_parallel_runner_internal.cc:199 i = <optimized out> #8 0x08050998 in jxl::ThreadPoolInternal::ThreadPoolInternal (num_worker_threads=<optimized out>, this=<optimized out>) at ./lib/jxl/base/thread_pool_internal.h:33 No locals. #9 jxl::extras::(anonymous namespace)::CodecTest_TestRoundTrip_Test::TestBody (this=<optimized out>) at ./lib/extras/codec_test.cc:272 pool = {<jxl::ThreadPool> = { runner_ = 0x8096560 <jpegxl::ThreadParallelRunner::Runner(void*, void*, int (*)(void*, unsigned int), void (*)(void*, unsigned int, unsigned int), unsigned int, unsigned int)>, runner_opaque_ = 0x1037620}, runner_ = {memory_manager = {opaque = 0xffffffff, alloc = 0x1ae65c0 <_IO_file_jumps>, free = 0x82f3950}, static kWorkerWait = 18446744073709551614, static kWorkerOnce = 18446744073709551613, static kWorkerExit = 18446744073709551612, threads_ = std::vector of length 12, capacity 12 = {{_M_id = {_M_thread = 3}}, {_M_id = {_M_thread = 4}}, { _M_id = {_M_thread = 5}}, {_M_id = {_M_thread = 6}}, {_M_id = {_M_thread = 7}}, {_M_id = {_M_thread = 8}}, {_M_id = {_M_thread = 9}}, {_M_id = {_M_thread = 10}}, {_M_id = {_M_thread = 11}}, { _M_id = {_M_thread = 12}}, {_M_id = {_M_thread = 13}}, {_M_id = {_M_thread = 14}}}, num_worker_threads_ = 12, num_threads_ = 12, depth_ = std::atomic<int> = { 0 }, mutex_ = {<std::__mutex_base> = {_M_mutex = {__lock = 0, __owner_id = 0, __cnt = 0, __shpid = 0, __type = 0, __flags = 0, __reserved1 = 0, __reserved2 = 0}}, <No data fields>}, workers_ready_cv_ = { _M_cond = {_M_cond = {__lock = 0, __queue = 0x0, __attr = 0x0, __wrefs = 0, __data = 0x0}}}, workers_ready_ = 962494, worker_start_cv_ = {_M_cond = {_M_cond = {__lock = 0, __queue = 0x2000eed0, __attr = 0x0, __wrefs = 24, __data = 0x0}}}, worker_start_command_ = 18446744073709551613, data_func_ = 0x8096550 <jpegxl::ThreadParallelRunner::CallClosure<jpegxl::ThreadParallelRunner::ThreadParallelRunner(int)::<lambda(int, int)> >(void *, uint32_t, size_t)>, jpegxl_opaque_ = 0x1037410, padding1 = "\004w\003\001\000w\003\001.9/\b8{\003\001\254k\003\000p\215\207\001\000\226\256\001\000\000\000\000\000\000\000\000\004w\003\001<9/\b\210{\003\001\000\360\207\001p\215\207\001\000\226\256\001\000\000\000", num_reserved_ = std::atomic<unsigned int> = { 0 }, padding2 = "\024T\210\001\364_\003\000\000\000\000\000\025\000\000\000\b\v\210\001p\r\210\001\005", '\000' <repeats 15 times>, "l\000\000\000\364_\003\000\030&\004\001$u\202\r\244w\003\001\320w\003\001"}} params = <optimized out> #10 0x082c9a8a in void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) () No symbol table info available. #11 0x082b9717 in testing::Test::Run() () No symbol table info available. #12 0x082b9919 in testing::TestInfo::Run() () No symbol table info available. #13 0x082b9e87 in testing::TestSuite::Run() () No symbol table info available. #14 0x082bf935 in testing::internal::UnitTestImpl::RunAllTests() () No symbol table info available. #15 0x082ca00a in bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) () No symbol table info available. #16 0x082b9a00 in testing::UnitTest::Run() () No symbol table info available. #17 0x0804a033 in main () No symbol table info available. (gdb) -M