So. Jetzt mal eine ganz andere Herangehensweise

Ich hatte schon länger vermutet, dass die {read,write}LockMessaging()-Calls das Problem waren.
Heute wollte ich mal die gefixten Error-Pfade für die ganzen Command*-Funktionen committen (das ist unabhängig vom Rest, aber schliesst aus, dass die GUI hängt, weil sie ein Kommando an den sectionsd schickt, der aber wegen eines Fehlers "vergisst" zu antworten). Als ich den Patch zum Test kompiliert hatte stolperte ich prompt wieder über diese Deadlocks.
Dabei kam raus, dass der sectionsd am messaging Lock hing. Also habe ich mal untersucht, welche davon eigentlich notwendig sind und welche nicht.
Alle diese messaging_*-Variablen, die nur innerhalb eines einzelnen Threads benutzt werden, brauchen IMHO kein Locking, also habe ich es mal auskommentiert. Patch und Binary giibt's hier:
sectionsd-fix-error-paths-and-rework-messaging-locks-v1.diff
sectionsd-fix-error-paths-and-rework-messaging-locks-v1.gz
Erfahrungsberichte, insbesondere von denen, die bisher reproduzierbar Hänger hatten, sind willkommen.
Oh - und wenn mir jemand den Fehler in meinem Gedankengang aufzeigt, ist mir das auch recht
