internetradio hängt neutrino auf

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
amiga23
Einsteiger
Einsteiger
Beiträge: 238
Registriert: Sonntag 14. November 2004, 23:44

internetradio hängt neutrino auf

Beitrag von amiga23 »

Der Audioplayer hängt Neutrino komplett auf, wenn es beim Streamen zu Verbindungsproblemen kommt.

Bestes Beispiel ist momentan der sender OBX-4O unter shoutcast -> Latin

Oder einfach bei jedem anderen Stream den Netzwerstecker ziehen.

Die Musik stoppt. Noch lässt sich die Lautsärke regeln. Es lassen sich auch noch Dateien hinzufügen. Der Audioplayer zeigt weiterhin das play-Symbol. Sobald man HOME drückt wird aus dem play-Symbol das stop-Symbol und Neutrino lässt sich nicht mehr bedienen. Nicht mal mehr die Lautstärke verstellen.
Hat wohl etwas damit zu tun, dass der Thread nicht beendet wird.

Bei OBX-4O bleibt er schon bei

Code: Alles auswählen

FILE* fp=fopen(in->Filename.c_str(), "r");
in CBaseDec::DecoderBase stehen. Anscheinend gibt es hier keinen Timeout.

Früher hatte der Hangcheck timer das bemerkt und die Box neugestartet. Doch jetzt geht das nicht mehr. Ist bestimmt schon ein halbes Jahr so.
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Re: internetradio hängt neutrino auf

Beitrag von Houdini »

ich hatte sowas ähnliches mal Anfang August gefixt, welchen Stand hast du?
amiga23
Einsteiger
Einsteiger
Beiträge: 238
Registriert: Sonntag 14. November 2004, 23:44

Re: internetradio hängt neutrino auf

Beitrag von amiga23 »

Moin Houdini,

ich habe den neuesten Stand selbstgebaut mit uclibc. Mit dem aktuellen JtG Image geht es aber auch nicht.

Das Problem, dass OBX-4O direkt nicht funktioniert, lag an einem Fehler mit meinem Router.
https://sourceforge.net/forum/forum.php ... _id=799261

Wenn ich das Netzwerkkabel ziehe oder es andere Probleme mit der Verbindung gibt (z.B. auch die 24h Stunden Zwangstrennung) hängt sich die Box weiterhin auf.

Bei YouFM
[url]icy://85.195.120.41:80/17000hr/live/3219youfm/de_96.mp3[/url]
war es heute morgen so, dass der Decoder Thread sich von selbst beendet hat (ich habe ein paar debug ausgaben eingebaut). Das Playsymbol war dann zwar noch im Display, aber mit home konnte ich erst in den Stopmodus und mit nochmal Home den Player verlassen und die Box lief normal weiter.

Greets
Amiga23
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: internetradio hängt neutrino auf

Beitrag von mb405 »

das problem ist schon lange.
sobald der stream vom server abbricht, hängt sich neutrino weg.
amiga23
Einsteiger
Einsteiger
Beiträge: 238
Registriert: Sonntag 14. November 2004, 23:44

Re: internetradio hängt neutrino auf

Beitrag von amiga23 »

Könnte das vielleicht etwas mit den TCP Parametern zu tun haben?
Bei Kernel 2.6 kann man ja unter /proc/sys/net/ipv4/... einiges einstellen. Das müsste doch beim 2.4 auch irgendwie gehen.
Ich erinnere mich daß ich mal Probleme mit einer gewissen Datenbank von einem bekannten Hersteller hatte. Da hat der tolle transparent failover treiber erst nach 4 Stunden umgeschaltet, weil die timeout und retry Parameter etwas ungünstig gesetzt waren. Leider weis ich nicht welche das genau waren. Aber folgende klingen doch nicht schlecht:

tcp_retries1
tcp_retries2
tcp_syn_retries
tcp_synack_retries
tcp_keepalive_time
tcp_keepalive_probes
tcp_keepalive_intvl

Hab mal ein wenig mit madplay und wget rumgespielt. Der wget in busybux kennt die --timeout option nicht.

wget -O - http://190.40.182.79:8000 | /var/hdd/playground/bin/madplay -

Führt beim Neustarten des Routers auch zu einem Hänger.

Mit dem "richtigen" wget und --timeout

/var/hdd/playground/bin/wget --timeout 10 -O - http://190.40.182.79:8000 | /var/hdd/playground/bin/madplay -

merkt er es und bricht dann ab.

wget man page:
"The default read timeout is 900 seconds."
"By default, there is no connect timeout, other than that implemented by system libraries."
"The default is to retry 20 times, with the exception of fatal errors like "connection refused" or "not found" (404), which are not retried."

Die timeouts und retries von wget haben zwar nix mit unserem Audioplayer zu tun, aber im Kernel sind die defaults ähnlich hoch.
amiga23
Einsteiger
Einsteiger
Beiträge: 238
Registriert: Sonntag 14. November 2004, 23:44

Re: internetradio hängt neutrino auf

Beitrag von amiga23 »

Für /proc/sys/net/ipv4 benötigt man SYSCTL im Kernel:
kernel-sysctl.diff

Bringt mich aber auch nicht weiter.

Im Code habe ich folgende Stelle identifiziert, an der es zum Stillstand kommt:

netfile.cpp

Code: Alles auswählen

void CacheFillThread(void *c)
{
...
        do
        {
                /* has a f_close() call in an other thread already closed the cache ? */
                datalen = CACHEBTRANS;

                rval = fread(buf, 1, datalen, cache->fd); // <--- hier bleibt es stehen.

...
cache->fd ist ein socket, der in der Methode ConnectToServer geöffnet wird.

Habe versucht dem socket einen timeout mitzugeben:

Code: Alles auswählen

        struct timeval tv;
        tv.tv_sec = 10; tv.tv_usec = 0;
        if( (setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv))) )
                printf("*** ERROR: Can't Set timeout **************************************************");
Kennt sich jemand damit aus?