I don't know why but timidity sometimes gets stuck in an infinite loop when my system is under heavy disk I/O load. Backtrace from gdb: #0 0x00007f7f29caca57 in ioctl () at ../sysdeps/unix/syscall-template.S:84 #1 0x00007f7f2c31f789 in snd_seq_hw_get_queue_status (seq=<optimized out>, status=<optimized out>) at /usr/src/debug/media-libs/alsa-lib-1.0.29/alsa-lib-1.0.29/src/seq/seq_hw.c:199 #2 0x00000000004a887d in get_current_queue_position (ctxp=0x82dbc0 <alsactx>) at alsaseq_c.c:427 #3 0x00000000004a905a in doit (ctxp=0x82dbc0 <alsactx>) at alsaseq_c.c:498 #4 ctl_pass_playing_list (n=<optimized out>, args=<optimized out>) at alsaseq_c.c:395 #5 0x000000000041b77b in timidity_play_main (files=0x7ffd58ee9690, nfiles=0) at timidity.c:5655 #6 main (argc=<optimized out>, argv=<optimized out>) at timidity.c:5935 Repeatedly doing "finish" gets it stuck at the "doit" frame. If whoever handles this needs me to rebuild timidity with more debug or less optimization let me know.
488 while (snd_seq_event_input_pending(ctxp->handle, 1)) { (gdb) next 492 if (ctxp->active) { (gdb) next 495 if (IS_STREAM_TRACE) { (gdb) next 497 if (ctxp->queue >= 0) (gdb) next 498 last_queue_offset = get_current_queue_position(ctxp); (gdb) next 500 buffer_time_offset += buffer_time_advance; (gdb) next 501 ev.time = buffer_time_offset; (gdb) next 511 play_event(&ev); (gdb) next 510 ev.type = ME_NONE; (gdb) next 511 play_event(&ev); (gdb) next 512 aq_fill_nonblocking(); (gdb) next 514 if (! ctxp->active || ! IS_STREAM_TRACE) { (gdb) next 488 while (snd_seq_event_input_pending(ctxp->handle, 1)) { What appears to be the infinite loop. timidity isn't making any sound and the CPU load is stuck at 100 percent.
Created attachment 453504 [details] emerge --info
Still valid with 2.15.0-r1?