Hallo,
ich habe hier gerade eine komische Interferenz zwischen der pthread library und dem Setzen von Signalaktionen.
Gibt es irgendwelche Einschränkungen beim Benutzen von sigaction(), wenn pthreads benutzt werden?
Das Problem manifestiert sich folgendermaßen: Ein Programm (bzw. die Library, die es benutzt) versucht mit sigaction einen Signalhandler zu installieren, um auf Signale von außen reagieren zu können sigaction(33,&act,NULL); Wird das Programm nun nicht mit -lpthread gelinkt funktioniert es. Wenn allerdings explizit -lpthread beim Linken gesetzt ist, oder eine der benutzten Libraries pthread verlangt, dann kommt an dieser Stelle der Fehler EINVAL was für Sigaction "falsche Signalnummer" bedeutet
Kann jemand damit etwas anfangen oder mir einen Tip geben, wo ich zu suchen beginnen kann?
Nähere Informationen: es geht um dyninstAPI http://www.dyninst.org/ im Zusammenhang mit TAU http://www.acl.lanl.gov/tau/ (nicht immer greifbar) Wenn ich das dyner Tool mit einer threaded Version von Tcl linke, bricht es mit obigem Fehler ab, bei einer nicht gethreadeten Version funktioniert es ... Vielleicht ist das auch verantwortlich dafür, daß ich keine threaded Applikation automatisch instrumentieren kann (tau_run).
Ich bin mit meinem Latein am Ende und hoffe, ihr könnt mir weiterhelfen oder mein Suchen in die richtige Richtung lenken.
Uwe Koloska
Hallo Uwe,
Am 07. Mai 2003 schrieb Uwe Koloska:
Gibt es irgendwelche Einschränkungen beim Benutzen von sigaction(), wenn pthreads benutzt werden?
Die pthreads-Library verwendet intern die Signale SIGUSR1 und SIGUSR2, welche unter Linux aber die Signalnummern 10 bzw. 12 haben.
Gruss, Matthias
Hallo Matthias,
Matthias Petermann wrote:
Die pthreads-Library verwendet intern die Signale SIGUSR1 und SIGUSR2, welche unter Linux aber die Signalnummern 10 bzw. 12 haben.
Ich hab's auch schon mit mehreren anderen Signalnummern probiert -- außerdem sollte sich auch ein schon belegtes signal umbiegen lassen (das ist ja der Sinn der ganzen Sache).
Kann es vielleicht sein, daß man threadsichere signal-Funktionen benutzen muß? (Gibt's die?)
Uwe
lug-dd@mailman.schlittermann.de