<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2015-04-29 8:57 GMT+02:00 "Thomas B. Rücker" <span dir="ltr"><<a href="mailto:thomas@ruecker.fi" target="_blank">thomas@ruecker.fi</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 04/28/2015 02:27 PM, Jan-Pieter wrote:<br>
> Hi all,<br>
> see my reply inline.<br>
> Cheers, Jan-Pieter<br>
><br>
><br>
> 2015-04-26 7:23 GMT+02:00 "Thomas B. Rücker" <<a href="mailto:thomas@ruecker.fi" target="_blank">thomas@ruecker.fi</a><br>
> <mailto:<a href="mailto:thomas@ruecker.fi" target="_blank">thomas@ruecker.fi</a>>>:<br>
><br>
> On 04/25/2015 07:32 PM, Jan-Pieter wrote:<br>
> > Hi all,<br>
> ><br>
> > I am a long-time user of Icecast, always without problems. However i<br>
> > made a new setup using icecast 2.4.1 on a fresh and quick CentOS<br>
> VPS.<br>
><br>
> EPEL package or from somewhere else?<br>
><br>
> it's just a standard CentOS 6.6 release, no EPEL. Distri from hosting<br>
> provider. [root@h2429770 tmp]# uname -a<br>
> Linux <a href="http://h2429770.stratoserver.net" target="_blank">h2429770.stratoserver.net</a> <<a href="http://h2429770.stratoserver.net" target="_blank">http://h2429770.stratoserver.net</a>><br>
> 2.6.32-042stab103.6 #1 SMP Wed Jan 21 13:07:39 MSK 2015 x86_64 x86_64<br>
> x86_64 GNU/Linux<br>
><br>
><br>
><br>
> > The issue is that starting icecast gives a segmentation fault at<br>
> > around 80% of all starts. No core file nor a entry in error.log<br>
> is posted.<br>
><br>
> Enable core dumps using "ulimit -c unlimited". The PWD from where you<br>
> start Icecast needs to be writeable.<br>
><br>
><br>
> Even with ulimit -c unlimited and running from a writable PWD no core<br>
> is dumped.<br>
<br>
Seems it's a bit more involved on Centos6:<br>
<a href="http://www.unixmen.com/how-to-enable-core-dumps-in-rhel6/" target="_blank">http://www.unixmen.com/how-to-enable-core-dumps-in-rhel6/</a><br>
I've tried it successfully on a quick install of centos6 that I've<br>
compiled 2.4.2 on and am going to try with your config.<br>
(As you don't use url-auth for sources, 2.4.1 is safe for you)<br>
<br></blockquote><div>I followed this steps, but still no core file with this type of segfault. Other programs which segfaults do produce a core dump however. so bit strange...</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
> > In the remaining 20% of the starts icecast start with no problem.<br>
> ><br>
> > Contents of the error.log with a succesfull start (20% of<br>
> icecast starts):<br>
> > [2015-04-25 21:08:40] INFO main/main Icecast 2.4.1 server started<br>
> > [2015-04-25 21:08:40] INFO connection/get_ssl_certificate No SSL<br>
> > capability<br>
> > [2015-04-25 21:08:40] INFO stats/_stats_thread stats thread started<br>
> > [2015-04-25 21:08:40] INFO yp/yp_update_thread YP update thread<br>
> started<br>
> > [2015-04-25 21:08:40] INFO source/source_fallback_file mountpoint<br>
> > /geen-uitzending.mp3 is reserved<br>
> > [2015-04-25 21:08:40] WARN format/format_get_type Unsupported or<br>
> > legacy stream type: "audio/mpeg". Falling back to generic minimal<br>
> > handler for best effort.<br>
> > [2015-04-25 21:08:40] WARN source/source_fallback_file mountpoint<br>
> > "/geen-uitzending.mp3" already reserved<br>
> > [2015-04-25 21:08:40] INFO source/source_main listener count on<br>
> > /geen-uitzending.mp3 now 0<br>
> ><br>
> ><br>
> > Contents of error.log with a segmentation fault direct after start<br>
> > (80% of icecast starts):<br>
> > 2015-04-25 21:09:05] INFO main/main Icecast 2.4.1 server started<br>
> > [2015-04-25 21:09:05] INFO connection/get_ssl_certificate No SSL<br>
> > capability<br>
> > [2015-04-25 21:09:05] INFO yp/yp_update_thread YP update thread<br>
> started<br>
> > [2015-04-25 21:09:05] INFO source/source_fallback_file mountpoint<br>
> > /geen-uitzending.mp3 is reserved<br>
> > [2015-04-25 21:09:05] WARN format/format_get_type Unsupported or<br>
> > legacy stream type: "audio/mpeg". Falling back to generic minimal<br>
> > handler for best effort.<br>
> > [2015-04-25 21:09:05] INFO stats/_stats_thread stats thread started<br>
><br>
> Can you attach your icecast.xml please (with passwords removed)?<br>
> This might help reproduce the problem.<br>
><br>
><br>
> I attached icecast.xml. I also turned debug errorlog level on.<br>
> Results with debug on:<br>
><br>
> good start:<br>
> [2015-04-28 15:56:39] INFO main/main Icecast 2.4.1 server started<br>
> [2015-04-28 15:56:39] DBUG yp/yp_recheck_config Updating YP configuration<br>
> [2015-04-28 15:56:39] INFO connection/get_ssl_certificate No SSL<br>
> capability<br>
> [2015-04-28 15:56:39] INFO stats/_stats_thread stats thread started<br>
> [2015-04-28 15:56:39] INFO yp/yp_update_thread YP update thread started<br>
> [2015-04-28 15:56:39] INFO source/source_fallback_file mountpoint<br>
> /geen-uitzending.mp3 is reserved<br>
> [2015-04-28 15:56:39] DBUG connection/connection_complete_source<br>
> sources count is 0<br>
> [2015-04-28 15:56:39] WARN format/format_get_type Unsupported or<br>
> legacy stream type: "audio/mpeg". Falling back to generic minimal<br>
> handler for best effort.<br>
> [2015-04-28 15:56:39] DBUG connection/connection_complete_source<br>
> source is ready to start<br>
> [2015-04-28 15:56:39] DBUG source/source_init Source creation complete<br>
> [2015-04-28 15:56:39] WARN source/source_fallback_file mountpoint<br>
> "/geen-uitzending.mp3" already reserved<br>
> [2015-04-28 15:56:39] INFO source/source_main listener count on<br>
> /geen-uitzending.mp3 now 0<br>
> [2015-04-28 15:56:39] DBUG stats/modify_node_event update global<br>
> sources (1)<br>
> [2015-04-28 15:56:39] DBUG stats/process_source_event new source stat<br>
> /geen-uitzending.mp3<br>
> [2015-04-28 15:56:39] DBUG stats/modify_node_event update global<br>
> source_client_connections (1)<br>
> [2015-04-28 15:56:39] DBUG stats/process_source_event new node<br>
> listeners (0)<br>
> [2015-04-28 15:56:39] DBUG stats/process_source_event new node<br>
> listenurl (<a href="http://stream3.server7.nl:80/geen-uitzending.mp3" target="_blank">http://stream3.server7.nl:80/geen-uitzending.mp3</a>)<br>
> [2015-04-28 15:56:39] DBUG stats/modify_node_event update global<br>
> source_total_connections (1)<br>
> [2015-04-28 15:56:39] DBUG stats/process_source_event new node<br>
> slow_listeners (0)<br>
> [2015-04-28 15:56:39] DBUG stats/modify_node_event update<br>
> "/geen-uitzending.mp3" listeners (0)<br>
> [2015-04-28 15:56:39] DBUG stats/process_source_event new node<br>
> listener_peak (0)<br>
> [2015-04-28 15:56:39] DBUG stats/process_source_event new node<br>
> stream_start (Tue, 28 Apr 2015 15:56:39 +0200)<br>
> [2015-04-28 15:56:39] DBUG stats/process_source_event new node<br>
> stream_start_iso8601 (2015-04-28T15:56:39+0200)<br>
> [2015-04-28 15:56:39] DBUG stats/process_source_event new node<br>
> total_bytes_read (0)<br>
> [2015-04-28 15:56:39] DBUG stats/process_source_event new node<br>
> total_bytes_sent (0)<br>
> [2015-04-28 15:56:39] DBUG stats/modify_node_event update<br>
> "/geen-uitzending.mp3" listeners (0)<br>
> [2015-04-28 15:56:40] DBUG slave/_slave_thread checking master stream<br>
> list<br>
<br>
I currently suspect it's something interacting with the stats thread and<br>
the two identical fallbacks.<br>
<br></blockquote><div>Agree, seems to have something to do with stats thread. But I tested also with dual fall back files. Same issue. See attached new configfile. </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
><br>
> bad start (segfault):<br>
> [2015-04-28 15:56:53] INFO main/main Icecast 2.4.1 server started<br>
> [2015-04-28 15:56:53] DBUG yp/yp_recheck_config Updating YP configuration<br>
> [2015-04-28 15:56:53] INFO connection/get_ssl_certificate No SSL<br>
> capability<br>
> [2015-04-28 15:56:53] INFO yp/yp_update_thread YP update thread started<br>
> [2015-04-28 15:56:53] INFO source/source_fallback_file mountpoint<br>
> /geen-uitzending.mp3 is reserved<br>
> [2015-04-28 15:56:53] DBUG connection/connection_complete_source<br>
> sources count is 0<br>
> [2015-04-28 15:56:53] WARN format/format_get_type Unsupported or<br>
> legacy stream type: "audio/mpeg". Falling back to generic minimal<br>
> handler for best effort.<br>
> [2015-04-28 15:56:53] DBUG connection/connection_complete_source<br>
> source is ready to start<br>
> [2015-04-28 15:56:53] DBUG source/source_init Source creation complete<br>
> [2015-04-28 15:56:53] INFO stats/_stats_thread stats thread started<br>
> [2015-04-28 15:56:53] DBUG stats/process_source_event new source stat<br>
> /geen-uitzending.mp3<br>
><br>
><br>
><br>
><br>
><br>
><br>
> > Both the stream and the fallback file are .mp3 type. I tried<br>
> removing<br>
> > the fallback entry. Then icecast starts always normally. So it seems<br>
> > related to the .mp3 fallback.<br>
> ><br>
> > Also I tried to launch icecast with strace, and this NEVER fails. No<br>
> > segmentation faults!<br>
> ><br>
> ><br>
> > Any idea what's going wrong? Something going wrong with timing on a<br>
> > fast server?<br>
><br>
> It sounds like you've found a race condition. I'm not exactly sure<br>
> what's happening though.<br>
> By the log output something seems to be instantly accessing the<br>
> stream.<br>
> Notice the order of the stats_thread is different in both.<br>
><br>
><br>
> Yes this is the only interesting thing. The segfault only happens when<br>
> "INFO stats/_stats_thread stats thread started"<br>
> is missing in the error.log. So with every succesful start this line<br>
> gets logged, and if the line is missing the segfault occurs.<br>
<br>
I suspect it's a very close race that might only occur on that specific<br>
configuration/virtualization.<br>
In such case invasive things like strace and valgrind won't help us. A<br>
coredump might reveal something, but isn't guaranteed.<br>
<br>
What BTW confuses me is that you override the mountpoint configuration<br>
to ogg/vorbis, but fall back to an mp3 file.<br>
<br></blockquote><div>Sorry my mistake. Tried changing things here, but did not change the behaviour. In the attached config file I set it all to mp3 and problem persists.</div><div>Agree that it has probably something to do with virtualization platform. My VPS is running in a Virtuozzo container. However with other programs no issue at all. Looks to me still as a timing issue that somehow the stats thread is not started causing the segfault when loading the fallback stream. Maybe a small noop/sleep just before the statsthread will solve my issue...</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
> I also tried running using valgrind on advice of Philipp, but when<br>
> running with valgrind the segfault does not occur and icecast starts<br>
> normally... (same as with gdb)<br>
<br>
yeah, expected.<br>
<br>
I tried your config on a centos 6 machine and couldn't reproduce it. How<br>
many CPU cores / threads does it have?<br>
<br></blockquote><div>4 cores/threads.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Cheers<br>
<br>
Thomas<br>
<br></blockquote><div>Thanks!</div><div>Jan-Pieter </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
_______________________________________________<br>
Icecast-dev mailing list<br>
<a href="mailto:Icecast-dev@xiph.org" target="_blank">Icecast-dev@xiph.org</a><br>
<a href="http://lists.xiph.org/mailman/listinfo/icecast-dev" target="_blank">http://lists.xiph.org/mailman/listinfo/icecast-dev</a><br>
</blockquote></div><br></div></div>