handling stack growth induced by the debugger
robert at ocallahan.org
Wed Mar 18 09:01:00 UTC 2015
On Wed, Mar 18, 2015 at 2:38 PM, Robert O'Callahan <robert at ocallahan.org>
> My current best idea is to allow spurious grow-downs during replay, but
> record the faulting address for SIGSEGVs and when we replay a deterministic
> SIGSEGV, if the faulting address is in (or just below) a growdown VMA,
> completely unmap the growdown mapping since it must be spurious.
Turns out it's difficult to be sure it's safe to unmap a page. For example
a SIGSEGV could overlap a page boundary, and then we don't know for sure
which page was unmapped in the recording. So instead, when a deterministic
SIGSEGV is for an address whose first byte is readable in the tracee but
AddressSpace knows no mapping for, we replay it using the async signal
replay mechanism. That way, we don't even need to get the VM mappings
right; it's safe to have spurious mapped pages wherever we want.
oIo otoeololo oyooouo otohoaoto oaonoyooonoeo owohooo oioso oaonogoroyo
owoiotoho oao oboroootohoeoro oooro osoiosotoeoro owoiololo oboeo
osouobojoeocoto otooo ojouodogomoeonoto.o oAogoaoiono,o oaonoyooonoeo
osoaoyoso otooo oao oboroootohoeoro oooro osoiosotoeoro,o o‘oRoaocoao,o’o
oaonosowoeoroaoboloeo otooo otohoeo ocooouoroto.o oAonodo oaonoyooonoeo
osoaoyoso,o o‘oYooouo ofooooolo!o’o owoiololo oboeo oiono odoaonogoeoro
otohoeo ofoioroeo ooofo ohoeololo.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the rr-dev