You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Behavior:
Basically this is what I see(screenshots below):
So here there is no event associated with [8,1,1] as we can see in recordlog:
The only time [8,1,1] appears in recordlog is in the above image(line3) as:
(event:ThreadInitialized((thread_id:(8,1,1,0,0,0,0,0,0,0),size:3)),channel_variant:None,chan_id:(det_thread_id:(thread_id:(0,0,0,0,0,0,0,0,0,0),size:0),channel_id:0),type_name:"Thread")
So the thread [8,1,1] was spawned by [8,1,0] but it has no event - not used anywhere else.
Hypothesis:
We are assuming atleast one event is always there otherwise we leave the recordlog empty.
For a thread that spawns but does nothing we don't create an empty logger but during replay we assume we will be able to take its entry from the global replayer.
Disambiguation of the hypothesis:
Assertion to disambiguate the hypothesis above in servo(maybe write a test later - expensive)
Solutions:
The text was updated successfully, but these errors were encountered:
Solution: Record all the spawned threads in recordlog.
This crash was happening because during replay mode the Global Replayer was trying to find an entry for the spawned threads which does nothing after being spawned. These kinds of threads were earlier not recorded in the recordlog.
Fixed this by recording every spawned thread in the recordlog.
created a new event in TivoEvent::ThreadSpawned which records all the spawned threads in recordlog, also implemented RecordEventChecker very similar to the one for ThreadInitialized.(see recordlog.rs)
added code for recording after spawning happens in addition to recording after thread being initialized.(see detthread.rs)
As a result the Global Replayer always finds an entry for spawned threads that do nothing in the program, earlier these threads created no entry and as a result Global Replayer gave us an error from function take_entry.
Test Case: Added a test case in the test suite to check if all the spawned threads are being recorded in recordlog, especially the ones which are not being used after spawning.(see detthread.rs test suite).
This is now integrated with the test suite, to run it separately run: cargo test detthread::tests::spawned_thread_recordreplay_test inside rr_channel directory.
Behavior:
Basically this is what I see(screenshots below):
So here there is no event associated with [8,1,1] as we can see in recordlog:
The only time [8,1,1] appears in recordlog is in the above image(line3) as:
(event:ThreadInitialized((thread_id:(8,1,1,0,0,0,0,0,0,0),size:3)),channel_variant:None,chan_id:(det_thread_id:(thread_id:(0,0,0,0,0,0,0,0,0,0),size:0),channel_id:0),type_name:"Thread")
So the thread [8,1,1] was spawned by [8,1,0] but it has no event - not used anywhere else.
Hypothesis:
We are assuming atleast one event is always there otherwise we leave the recordlog empty.
For a thread that spawns but does nothing we don't create an empty logger but during replay we assume we will be able to take its entry from the global replayer.
Disambiguation of the hypothesis:
Assertion to disambiguate the hypothesis above in servo(maybe write a test later - expensive)
Solutions:
The text was updated successfully, but these errors were encountered: