<div dir="ltr">Hi there,<div><br></div><div>I am trying to use python-shout 0.2.1 to broadcast to a icecast 2.4.0 server, which result in a segmentation fault and I can&#39;t understand why. Is anyone else experiencing this problem?</div>
<div><br></div><div>Here is the config that I use with icecast 2.4.0.</div><div><br></div><div><div><font face="courier new, monospace">&lt;icecast&gt;</font></div><div><font face="courier new, monospace">    &lt;limits&gt;</font></div>
<div><font face="courier new, monospace">        &lt;clients&gt;100&lt;/clients&gt;</font></div><div><font face="courier new, monospace">        &lt;sources&gt;2&lt;/sources&gt;</font></div><div><font face="courier new, monospace">        &lt;threadpool&gt;5&lt;/threadpool&gt;</font></div>
<div><font face="courier new, monospace">        &lt;queue-size&gt;524288&lt;/queue-size&gt;</font></div><div><font face="courier new, monospace">        &lt;client-timeout&gt;30&lt;/client-timeout&gt;</font></div><div><font face="courier new, monospace">        &lt;header-timeout&gt;15&lt;/header-timeout&gt;</font></div>
<div><font face="courier new, monospace">        &lt;source-timeout&gt;10&lt;/source-timeout&gt;</font></div><div><font face="courier new, monospace">        &lt;burst-on-connect&gt;1&lt;/burst-on-connect&gt;</font></div>
<div><font face="courier new, monospace">        &lt;burst-size&gt;65535&lt;/burst-size&gt;</font></div><div><font face="courier new, monospace">    &lt;/limits&gt;</font></div><div><font face="courier new, monospace"><br>
</font></div><div><font face="courier new, monospace">    &lt;authentication&gt;</font></div><div><font face="courier new, monospace">        &lt;source-password&gt;passwood&lt;/source-password&gt;</font></div><div><font face="courier new, monospace">        &lt;relay-password&gt;passwood&lt;/relay-password&gt;</font></div>
<div><font face="courier new, monospace">        &lt;admin-user&gt;admin&lt;/admin-user&gt;</font></div><div><font face="courier new, monospace">        &lt;admin-password&gt;passwood&lt;/admin-password&gt;</font></div><div>
<font face="courier new, monospace">    &lt;/authentication&gt;</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">    &lt;hostname&gt;thinkpad&lt;/hostname&gt;</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">    &lt;listen-socket&gt;</font></div><div><font face="courier new, monospace">        &lt;port&gt;8000&lt;/port&gt;</font></div>
<div><font face="courier new, monospace">    &lt;/listen-socket&gt;</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">    &lt;mount&gt;</font></div><div><font face="courier new, monospace">        &lt;mount-name&gt;/jukebox.ogg&lt;/mount-name&gt;</font></div>
<div><font face="courier new, monospace">        &lt;username&gt;source&lt;/username&gt;</font></div><div><font face="courier new, monospace">        &lt;password&gt;passwood&lt;/password&gt;</font></div><div><font face="courier new, monospace">        &lt;max-listeners&gt;10&lt;/max-listeners&gt;</font></div>
<div><font face="courier new, monospace">        &lt;burst-size&gt;&gt;65536&lt;/burst-size&gt;</font></div><div><font face="courier new, monospace">        &lt;hidden&gt;1&lt;/hidden&gt;</font></div><div><font face="courier new, monospace">        &lt;no-yp&gt;1&lt;/no-yp&gt;</font></div>
<div><font face="courier new, monospace">    &lt;/mount&gt;</font></div><div><font face="courier new, monospace">    &lt;fileserve&gt;1&lt;/fileserve&gt;</font></div><div><font face="courier new, monospace">    &lt;paths&gt;</font></div>
<div><font face="courier new, monospace">        &lt;basedir&gt;/usr/share/icecast2&lt;/basedir&gt;</font></div><div><font face="courier new, monospace">        &lt;logdir&gt;/var/log/icecast&lt;/logdir&gt;</font></div><div>
<font face="courier new, monospace">        &lt;webroot&gt;/usr/share/icecast2/web&lt;/webroot&gt;</font></div><div><font face="courier new, monospace">        &lt;adminroot&gt;/usr/share/icecast2/admin&lt;/adminroot&gt;</font></div>
<div><font face="courier new, monospace">        &lt;alias source=&quot;/&quot; dest=&quot;/status.xsl&quot;/&gt;</font></div><div><font face="courier new, monospace">    &lt;/paths&gt;</font></div><div><font face="courier new, monospace"><br>
</font></div><div><font face="courier new, monospace">    &lt;logging&gt;</font></div><div><font face="courier new, monospace">        &lt;accesslog&gt;access.log&lt;/accesslog&gt;</font></div><div><font face="courier new, monospace">        &lt;errorlog&gt;error.log&lt;/errorlog&gt;</font></div>
<div><font face="courier new, monospace">        &lt;loglevel&gt;4&lt;/loglevel&gt; &lt;!-- 4 Debug, 3 Info, 2 Warn, 1 Error --&gt;</font></div><div><font face="courier new, monospace">        &lt;logsize&gt;10000&lt;/logsize&gt; &lt;!-- Max size of a logfile --&gt;</font></div>
<div><font face="courier new, monospace">    &lt;/logging&gt;</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">    &lt;security&gt;</font></div><div><font face="courier new, monospace">        &lt;chroot&gt;0&lt;/chroot&gt;</font></div>
<div><font face="courier new, monospace">    &lt;/security&gt;</font></div><div><font face="courier new, monospace">&lt;/icecast&gt;</font></div></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace"># sudo -u nobody icecast -c /etc/icecast.xml</font></div>
<div><br></div><div>I use the example.py which is included in python-shout package to test the broadcast, which result in the following.</div><div><br></div><div><div><font face="courier new, monospace">#!/usr/bin/env python</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace"># usage: ./example.py /path/to/file1 /path/to/file2 ...</font></div><div><font face="courier new, monospace">import shout</font></div>
<div><font face="courier new, monospace">import sys</font></div><div><font face="courier new, monospace">import string</font></div><div><font face="courier new, monospace">import time</font></div><div><font face="courier new, monospace"><br>
</font></div><div><font face="courier new, monospace">s = shout.Shout()</font></div><div><font face="courier new, monospace">print &quot;Using libshout version %s&quot; % shout.version()</font></div><div><font face="courier new, monospace"><br>
</font></div><div><font face="courier new, monospace">s.host = &#39;localhost&#39;</font></div><div><font face="courier new, monospace">s.password = &#39;passwood&#39;</font></div><div><font face="courier new, monospace">s.mount = &quot;/jukebox.ogg&quot;</font></div>
<div><font face="courier new, monospace">s.open()</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">total = 0</font></div><div><font face="courier new, monospace">st = time.time()</font></div>
<div><font face="courier new, monospace">for fa in sys.argv[1:]:</font></div><div><font face="courier new, monospace">    print &quot;opening file %s&quot; % fa</font></div><div><font face="courier new, monospace">    f = open(fa)</font></div>
<div><font face="courier new, monospace">    s.set_metadata({&#39;song&#39;: fa})</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">    nbuf = f.read(4096)</font></div>
<div><font face="courier new, monospace">    while 1:</font></div><div><font face="courier new, monospace">        buf = nbuf</font></div><div><font face="courier new, monospace">        nbuf = f.read(4096)</font></div><div>
<font face="courier new, monospace">        total = total + len(buf)</font></div><div><font face="courier new, monospace">        if len(buf) == 0:</font></div><div><font face="courier new, monospace">            break</font></div>
<div><font face="courier new, monospace">        s.send(buf)</font></div><div><font face="courier new, monospace">        s.sync()</font></div><div><font face="courier new, monospace">    f.close()</font></div><div><font face="courier new, monospace"><br>
</font></div><div><font face="courier new, monospace">    et = time.time()</font></div><div><font face="courier new, monospace">    br = total*0.008/(et-st)</font></div><div><font face="courier new, monospace">    print &quot;Sent %d bytes in %d seconds (%f kbps)&quot; % (total, et-st, br)</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">print s.close()</font></div></div><div><br></div><div><font face="courier new, monospace"># ./env/bin/python example.py test.mp3</font></div>
<div><div><font face="courier new, monospace">Using libshout version 2.3.1</font></div><div><font face="courier new, monospace">opening file test.mp3</font></div><div><font face="courier new, monospace">Segmentation fault</font></div>
</div><div><br></div><div>-- <br><div dir="ltr"><div><br></div><font face="arial, helvetica, sans-serif"><b style="font-size:small">Frank Lazzarini</b><br><font size="1"><b>Email:</b> <a href="mailto:flazzarini@gmail.com" target="_blank">flazzarini@gmail.com</a>  <b>Phone:</b> +352 621 314 430<br>
<b>Blog:</b>   <a href="http://www.gefoo.org" target="_blank">http://www.gefoo.org</a>   <b>LinkedIn:</b> <a href="http://www.linkedin.com/pub/frank-lazzarini/1a/a30/112" target="_blank">http://www.linkedin.com/pub/frank-lazzarini/1a/a30/112</a></font></font><br>
<div><div><br></div></div></div>
</div></div>