• Show log

    Commit

  • Hash : 25fa9c77
    Author : Azat Khuzhin
    Date : 2024-10-28T22:20:10

    test: retry signal tests with SIGALRM no OSX
    
    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.