Menu

#555 Crash when playing sound during prev_frame

Next_release
open
nobody
None
5
2014-11-05
2014-11-05
Bas Wijnen
No

While TASsing, it regularly happens to me that openmsx crashes. It is hard to reproduce, and I regularly work for hours before it happens. It seems to always happen while holding down the minus-key, which I have bound to -repeat "prev_frame". The crash has the error message:

Assertion 't = find_next_time_event(m)' failed at pulse/mainloop.c:722, function calc_next_timeout(). Aborting.

This is on Debian's latest version, 0.10.1-2, running on a sid Debian GNU/Linux system.

I think it may always happen when another program starts playing a sample (for example, when a message comes in on my chat program).

I'll try to get a stack backtrace at some point.

Discussion

  • Bas Wijnen

    Bas Wijnen - 2014-11-05

    I have a backtrace:

    (gdb) bt
    #0  0x00007ffff5376077 in __GI_raise (sig=sig@entry=6)
        at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
    #1  0x00007ffff5377458 in __GI_abort () at abort.c:89
    #2  0x00007ffff47f5a42 in ?? () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
    #3  0x00007ffff47f5f69 in pa_mainloop_prepare ()
       from /usr/lib/x86_64-linux-gnu/libpulse.so.0
    #4  0x00007ffff47f6602 in pa_mainloop_iterate ()
       from /usr/lib/x86_64-linux-gnu/libpulse.so.0
    #5  0x00007ffff7970a7b in ?? () from /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0
    #6  0x00007ffff79449a0 in ?? () from /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0
    #7  0x00007ffff794cd28 in ?? () from /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0
    #8  0x00007ffff798e6a9 in ?? () from /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0
    #9  0x00007ffff512c0a4 in start_thread (arg=0x7fffe8524700)
        at pthread_create.c:309
    #10 0x00007ffff5426c2d in clone ()
        at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    

    And with some more information:

    (gdb) bt full
    #0  0x00007ffff5376077 in __GI_raise (sig=sig@entry=6)
        at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
            resultvar = 0
            pid = 20901
            selftid = 20908
    #1  0x00007ffff5377458 in __GI_abort () at abort.c:89
            save_stage = 2
            act = {__sigaction_handler = {sa_handler = 0xd196b0, 
                sa_sigaction = 0xd196b0}, sa_mask = {__val = {13741392, 
                  140737091091776, 140737351949831, 5, 0, 140737091091664, 
                  140737307245864, 13735600, 140737091091776, 2048, 
                  140737351975717, 11, 0, 140737091094120, 4294967295, 0}}, 
              sa_flags = -397261056, sa_restorer = 0x7fffe0005a30}
            sigs = {__val = {32, 0 <repeats 15 times>}}
    #2  0x00007ffff47f5a42 in ?? () from /usr/lib/x86_64-linux-gnu/libpulse.so.0
    No symbol table info available.
    #3  0x00007ffff47f5f69 in pa_mainloop_prepare ()
       from /usr/lib/x86_64-linux-gnu/libpulse.so.0
    No symbol table info available.
    #4  0x00007ffff47f6602 in pa_mainloop_iterate ()
       from /usr/lib/x86_64-linux-gnu/libpulse.so.0
    No symbol table info available.
    #5  0x00007ffff7970a7b in ?? () from /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0
    ---Type <return> to continue, or q <return> to quit---
    No symbol table info available.
    #6  0x00007ffff79449a0 in ?? () from /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0
    No symbol table info available.
    #7  0x00007ffff794cd28 in ?? () from /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0
    No symbol table info available.
    #8  0x00007ffff798e6a9 in ?? () from /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0
    No symbol table info available.
    #9  0x00007ffff512c0a4 in start_thread (arg=0x7fffe8524700)
        at pthread_create.c:309
            __res = <optimized out>
            pd = 0x7fffe8524700
            now = <optimized out>
            unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140737091094272, 
                    -3603289019708380637, 1, 13761744, 21, 140737091094272, 
                    3603261362252769827, 3603268515721472547}, 
                  mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, 
                data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
            not_first_call = <optimized out>
            pagesize_m1 = <optimized out>
            sp = <optimized out>
            freesize = <optimized out>
            __PRETTY_FUNCTION__ = "start_thread"
    #10 0x00007ffff5426c2d in clone ()
    ---Type <return> to continue, or q <return> to quit---
        at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    No locals.
    
     
  • Manuel Bilderbeek

    Some discussion on this:

    <quibus> shevek: by the way - that crash you reported, isn't it in libpulse/pulseaudio?
    <quibus> openMSX doesn't use that directly, it uses libSDL as audio api
    <mth> I was thinking the same thing: [15:06] <mth> regarding bug 555: there is no openMSX frame on the stack, so I'd say it's more likely a bug of SDL 1.2 or pulseaudio
    <mth> since it's an assert, it's most likely an internal bug in pulseaudio
    <mth> because doing input validation with asserts is usually not a good idea
    <quibus> exactly
    <quibus> I also trigger it once in a while</quibus></quibus></mth></mth></mth></mth></quibus></quibus>

    Perhaps it helps to file a bug at PulseAudio?

     
MongoDB Logo MongoDB