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

Reply via email to