Hallo, On Wed, May 05, 2004 at 11:12:20PM +0200, Karsten Keil wrote:
Nicht notwendig, das Problem mit c2faxsend kann ich hier mit verschiedenen Karten nachvollziehen und die Ursache habe ich auch schon eingekreist, nur verstehen tu ich sie noch nicht, da sich eine grundlegene libc Function total falsch verhaelt.
nicht falsch, sondern neuerdings Posix conform.
c2faxsend ist ein multithread Programm, dessen Hauptthread das Senden anstöst und dann mittels einem semaphore auf das Ende der Uebertragung wartet.
Das passiert durch
sem_wait(&sem);
sem_wait sollte nur rückkehren, wenn der andere Thread ein sem_post(&sem); gemacht hat, d.h der Wert des sem != 0 wird.
Leider kehrt sem_wait(&sem); aber schon vorher mit Fehler (-1) errno 4 (Interrupted Systemcall) zurück, was lt. man page falsch, ist:
RETURN VALUE The sem_wait and sem_getvalue functions always return 0. All other semaphore functions return 0 on success and -1 on error, in addition to writing an error code in errno.
Ich werde das klaeren.
Die Posix version der man page ist aktuell: man 3p sem_wait Ein capi4hylafax update ist unterwegs, bis es über YOU zur Verfügung steht kann es von ftp://ftp.suse.com/pub/people/kkeil/fixes/9.1 geholt werden. -- Karsten Keil SuSE Labs ISDN development