Signalfd + waitpid + multithreading
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- cpp, linux
- Ambito
- operating-systems
Direzione di ricerca
Start by cloning the linked rr-signalfd-bug reproducer and running ./run.sh to confirm the difference between normal execution and rr record. Read issue #3658, then trace the rr handling of CLONE events and subsequent signal-delivery events for tasks whose tracer uses signalfd, epoll, and waitpid. Done means the reproduced cloned-task events no longer remain asleep under recording.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
This is a bug much similar to a previous one (that was fixed by @rocallahan) which can be found here, called RR waitpid bug not seen during non-recording
This time, it's instead an "awaiter thread" that uses signalfd and epoll to be notified of events (and then subsequently running waitpid as one would).
There's a test application that reproduces this bug 100% of the time here, clone the repo, and just do ./run.sh (it builds and runs without then with rr record).
Short summary of the reproducer:
a tracer application, it has a thread whose job is to be notified via signalfd on SIGCHLD that it can WAITPID. The tracee is TRACEMEd and set up to signal for most of the ptrace events.
The actual CLONE events will show up, as usual, but not the subsequent events for the cloned tasks, essentially putting them to sleep forever (since the tracer application doesn't get the SIGSTOP/SIGTRAP, whatever signal is delivered at the next signal-delivery-stop for the newly created task).
Since this test application works just fine, if no additional tracer/debugger thread is doing the epoll+waitpid-dance (i.e. done on the "main thread/task leader"), I'm guessing the solution will be very similar to that of the previous related issue #3658
- Lingua principale
- C++
- Stelle
- 10.7k
- Fork
- 666
- Merge medio
- 2g 22h
- PR unite (30g)
- 27
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di rr-debugger/rr
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 43/100
rr-debugger/rr#4127 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
rr-debugger/rr#4060 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
rr-debugger/rr#4059 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
rr-debugger/rr#4047 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
rr-debugger/rr#4042 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di rr-debugger/rr
Issue simili
-
audit(c2): add_project_arguments('/experimental:c11atomics', language: ['c', 'cpp']) for MS (C2-13)Apertahygiene type:refactor
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 1 giorno
-
OMPI 5.0.x CI builds failingAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
sandialabs/Fenix#172 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
rocketride-org/rocketride-server#2886 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
scp-fs2open/fs2open.github.com#7953 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
SteveMacenski/slam_toolbox#907 ·