[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [DDL-ML] Broken pipe beim neuen erddcd
Torsten Vogt wrote:
> Das selbe(!) wie bei "SET POWER OFF". Vgl. dazu den Code in der Datei
> srcp-yacc.y
Hatte ich erwartet, musste aber bei der Syntax der y-Dateien a bisserl
raten.
> Hmmmm, eine Idee hab ich noch: Er schrieb, dass er ein altes Linux mit
> einem 2.0.x-Kernel verwendet. Es kann natuerlich sein, dass die Thread-
> Library fehlerhaft ist und ein pthread_cancel() eines Threads den
> ganzen Prozess ins Nirwana befoerdert. AFAIR wiess die anfangs von mir
> verwendete Thread-Lib diesen Fehler auf (lang ist's her).
> Ich empfehle ein Update des Betriebssystems.
Ein potentielle verwundbare Stelle habe gesehen: In
cancel_refresh_cycle() wird auf die Schnittstelle zugegriffen während
der Refresh-Thread noch läuft.
Mein Vorschlag:
void cancel_refresh_cycle() {
/* store thread return value here */
void* pThreadReturn;
/* send cancel to refresh cycle */
pthread_cancel(ptid);
/* wait until the refresh cycle has terminated */
pthread_join(ptid,&pThreadReturn);
/* set interface lines to the off state */
tcflush(COM_DEVICE, TCOFLUSH);
tcflow(COM_DEVICE, TCOOFF);
set_SerialLine(SL_DTR,OFF);
/* clear thread struct */
ptid=(pthread_t)NULL;
}
Hier (mit Kernel 2.2.14 auf SuSE 6.4,) laufen beide Versionen ohne
Crash.
Libraries:
libpthread.so.0 => /lib/libpthread.so.0 (0x4001a000)
libc.so.6 => /lib/libc.so.6 (0x4002d000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Mfg
osc
--
email: olaf.schlachter@gmx.de web: http://home.allgaeu.org/oschlach
location: 87435 Kempten country: Germany