free_codecs() in libshout crash
Hello again,
here's another crash to report, this time with a bit more useful debugging data.
Backtrace:
Program terminated with signal 11, Segmentation fault.
#0 0x057b1865 in free_codecs (ogg_data=0x7c0b8080)
at /usr/ports/mystuff/net/libshout/w-libshout-2.1p2-debug/libshout-2.1/src/ogg.c:170
170 next = codec->next;
#1 0x057b1782 in close_ogg (self=0x8b30e280)
at /usr/ports/mystuff/net/libshout/w-libshout-2.1p2-debug/libshout-2.1/src/ogg.c:136
136 free_codecs(ogg_data);
#2 0x057ae350 in shout_close (self=0x8b30e280)
at /usr/ports/mystuff/net/libshout/w-libshout-2.1p2-debug/libshout-2.1/src/shout.c:166
166 self->close(self);
#3 0x1c006381 in ices_instance_stream (arg=0x83536680)
at /usr/ports/mystuff/net/ices2/w-ices-2.0.1p2-debug/ices-2.0.1/src/stream.c:348
348 shout_close(sdsc->shout);
#4 0x1c00de52 in _start_routine (arg=0x857181c0)
at /usr/ports/mystuff/net/ices2/w-ices-2.0.1p2-debug/ices-2.0.1/src/thread/thread.c:655
655 (start_routine)(real_arg);
#5 0x06d93d4b in _thread_start () from /usr/lib/libpthread.so.6.1
#6 0x0000001f in ?? ()
#7 0x00000000 in ?? ()
[...]
#1030 0x00000000 in ?? ()
Cannot access memory at address 0x86a16000
IceS2 log of the crash:
[2005-11-25 18:05:37] EROR stream/ices_instance_stream Send error: Socket error (Broken pipe)
[2005-11-25 18:05:37] DBUG input/input_flush_queue Input queue flush requested
[2005-11-25 18:05:37] WARN stream/ices_instance_stream Trying reconnect after server socket error
[2005-11-25 18:05:37] INFO signals/signal_hup_handler Flushing logs
[2005-11-25 18:05:37] INFO playlist-builtin/event_handler Moving to next file in playlist.
[2005-11-25 18:05:37] INFO playlist-builtin/playlist_read Currently playing "/home/maxx/streams/z10/Zoot_Woman_-_The_Model.ogg"
[2005-11-25 18:05:38] EROR stream/ices_instance_stream Failed to reconnect to localhost:8000 (Socket error)
[2005-11-25 18:05:40] WARN stream/ices_instance_stream Trying reconnect after server socket error
[2005-11-25 18:05:40] EROR stream/ices_instance_stream Failed to reconnect to localhost:8000 (Socket error)
[2005-11-25 18:05:42] WARN stream/ices_instance_stream Trying reconnect after server socket error
[2005-11-25 18:05:42] EROR stream/ices_instance_stream Failed to reconnect to localhost:8000 (Socket error)
[2005-11-25 18:05:44] WARN stream/ices_instance_stream Trying reconnect after server socket error
[2005-11-25 18:05:44] EROR stream/ices_instance_stream Failed to reconnect to localhost:8000 (Socket error)
[2005-11-25 18:05:46] WARN stream/ices_instance_stream Trying reconnect after server socket error
[2005-11-25 18:05:46] EROR stream/ices_instance_stream Failed to reconnect to localhost:8000 (Socket error)
[2005-11-25 18:05:46] EROR stream/ices_instance_stream Reconnect failed too many times, giving up.
[2005-11-25 18:05:46] WARN stream/ices_instance_stream Too many errors, shutting down
Icecast log of the crash:
[2005-11-25 18:05:38] INFO connection/_handle_source_request Source logging in at mountpoint "/kolaradio.ogg"
[2005-11-25 18:05:38] WARN connection/_handle_source_request Mountpoint /kolaradio.ogg in use
[2005-11-25 18:05:48] WARN source/get_next_buffer Disconnecting source due to socket timeout
[2005-11-25 18:05:48] INFO source/source_shutdown Source "/kolaradio.ogg" exiting
My RAM is in working order again, so this might be genuine. This is ices-2.0.1 and libshout-2.1, on OpenBSD 3.8-stable/i386.
Possibly interesting: The disconnects happen due to a mild DoS that my laptop sometimes does to the server ... for unknown reasons, the mail component of Mozilla occasionally freaks out and it sends several thousand ACK pps, increasing the interrupt load on the server enough to disrupt some of the services it provides. This means either ices or icecast (or both) temporarily run out of resources, and this appears to be the main trigger for those disconnects (which shouldn't crash.) Icecast is not affected long-term, it always survives and so do other ices2 streams (usually) if more than one runs in parallel.
Hth,
Moritz (_mx in Freenode/#icecast)