mirror of
https://github.com/libevent/libevent.git
synced 2025-01-31 09:12:55 +08:00
25fa9c7732
By some reason even after first ALRM signal received and event loop returned it is possible to recieve an ALRM one more time (at least one): % yes signal/simple_signal.. | head -n 1000 | xargs -I{} -P10 sh -c 'EVENT_DEBUG_LOGGING_ALL= bin/regress --timeout 0 --verbose {} >& /tmp/test.$SECONDS.$RANDOM.log' % cat /tmp/test.0.18384.log signal/simple_signal: [forking] [debug] event_add: event: 0x16d70f368 (fd 14), call 0x102704ae8 [debug] evsig_ensure_saved_: evsignal (14) >= sh_old_max (0), resizing OK /Users/ec2-user/libevent/test/regress.c:1086: assert(setitimer(ITIMER_REAL, &itv, NULL) == 0): 0 vs 0[debug] kq_dispatch: kevent reports 1 [debug] event_active: 0x16d70f368 (fd 14), res 8, callback 0x102704ae8 [debug] event_process_active: event: 0x16d70f368, call 0x102704ae8 [debug] event_del: 0x16d70f368 (fd 14), callback 0x102704ae8 [debug] event_base_loop: no events registered. FAIL /Users/ec2-user/libevent/test/regress.c:1062: ALRM received not from event loop![debug] event_del: 0x16d70f368 (fd 14), callback 0x102704ae8 [debug] event_base_free_: 0 events freed signal/simple_signal: exited with 0 (0) [FAILED signal/simple_signal (0 retries)] signal/simple_signal_re_order: [forking] [debug] event_add: event: 0x16d70f368 (fd 14), call 0x102704ae8 [debug] evsig_ensure_saved_: evsignal (14) >= sh_old_max (0), resizing [debug] event_del: 0x16d70f368 (fd 14), callback 0x102704ae8 [debug] event_add: event: 0x16d70f368 (fd 14), call 0x102704ae8 OK /Users/ec2-user/libevent/test/regress.c:1086: assert(setitimer(ITIMER_REAL, &itv, NULL) == 0): 0 vs 0[debug] kq_dispatch: kevent reports 1 [debug] event_active: 0x16d70f368 (fd 14), res 8, callback 0x102704ae8 [debug] event_process_active: event: 0x16d70f368, call 0x102704ae8 [debug] event_del: 0x16d70f368 (fd 14), callback 0x102704ae8 [debug] event_base_loop: no events registered. [debug] event_del: 0x16d70f368 (fd 14), callback 0x102704ae8 [debug] event_base_free_: 0 events freed signal/simple_signal_re_order: exited with 0 (0) 1/2 TESTS FAILED. (0 skipped) Also note, that the problem not only when I run two tests, but only one as well: % bin/regress --timeout 0 --repeat 1000 --verbose --no-fork signal/simple_signal >/tmp/test2.log 2>&1 signal/simple_signal: OK /Users/ec2-user/libevent/test/regress.c:1086: assert(setitimer(ITIMER_REAL, &itv, NULL) == 0): 0 vs 0 signal/simple_signal: OK /Users/ec2-user/libevent/test/regress.c:1086: assert(setitimer(ITIMER_REAL, &itv, NULL) == 0): 0 vs 0 FAIL /Users/ec2-user/libevent/test/regress.c:1062: ALRM received not from event loop! I've tried to run under "ktrace trace -Ss -f C4,S0x010c -c" but of course it does not fails under it (dtruss by some reason did not work for me). P.S. Also remove one TT_RETRIABLE for one test, since only setitimer() causes this.