sigprocmask () verursacht segfault
-
24-09-2019 - |
Frage
Gibt es irgendwelche bekannten Gründe für sigprocmask (), wenn sie in einer Multithread-Anwendung verwendet, um segfault?
ich eine Anwendung, die mehrere Threads mit Klon erzeugt (). Ich habe aus irgendeinem Grund festgestellt, dass, wenn ich sigprocmask verwenden es segfaults (nicht die ganze Zeit obwohl). Von der Backtrace () es scheint auch, wie die segfault auftreten wird, wenn ich sigprocmask () nach einem siglongjmp () verwenden.
Irgendwelche Ideen?
Lösung
Überprüfen Sie die zweite und dritte Argument. Wenn sie nicht NULL sind, stellen Sie sicher, dass sie jeweils einen gültigen Zeiger auf eine sigset_t
sind.
Beachten Sie, dass sigprocmask()
nur offiziell für einen Single-Thread-Prozess definiert ist. Ein Multi-Thread-Prozess sollte stattdessen verwenden pthread_sigmask()
, die die gleichen Argumente verwendet, obwohl es den Fehlercode anstatt mit errno
zurück.