Open rachelblasucci opened 6 years ago
@rachelreese were there any other changes you made to reverse
to cause the segfault? following the instructions from #2236 and this issue, I could not get the "invalid start byte" error after recovering from the files produced by the application Fail
in #2236. I noticed the output in #2236 has the following GRAPH: "| reverse2New source | |reverse2New||" --> "reverse2New sink"
which suggests that there were some other changes, possibly beyond just the names.
after getting a reproducible segfault, I added the following to startup.pony
's _setup_shutdown_handler
function:
ifdef not "resilience" then
SignalHandler(WallarooShutdownHandler(c, r, a), Sig.segv())
end
what then occurred was that the program appeared to be in an infinite loop, constantly retrying to re-run the segfault causing code block so the SignalHandler
never entered the apply
function for the WallarooShutdownHandler
.
the segfault occurs in the @pony_deserialise
function, specifically in pony_deserialise_offset
Hmm. So, it did take me several tries to reproduce it. I went back to the original code after being able to reproduce it, until I was just down to these steps, but that doesn't mean the system as a whole reset itself. (e.g. the recovery files, and anything else that might stick around like that.) I can make a point of trying a fresh system again, to see if there are additional steps.
Following on from #2236 (and also potentially #2232, #2234, as these all create recovery files in /tmp).
3) Now, modify code. Update the name of the
reverse
function to, e.g.reverse2
(both here andapplication_setup
):4) Re-run application twice. The first time will fail with the same "invalid start byte" error. The second run will produce a segfault, with this: