Descriptionruntime: make continuation pc available to stack walk
The 'continuation pc' is where the frame will continue
execution, if anywhere. For a frame that stopped execution
due to a CALL instruction, the continuation pc is immediately
after the CALL. But for a frame that stopped execution due to
a fault, the continuation pc is the pc after the most recent CALL
to deferproc in that frame, or else 0. That is where execution
will continue, if anywhere.
The liveness information is only recorded for CALL instructions.
This change makes sure that we never look for liveness information
except for CALL instructions.
Using a valid PC fixes crashes when a garbage collection or
stack copying tries to process a stack frame that has faulted.
Record continuation pc in heapdump (format change).
Fixes issue 8048.
Patch Set 1 #Patch Set 2 : diff -r a27f34c771cb https://code.google.com/p/go/ #Patch Set 3 : diff -r 46d573d68ee6 https://code.google.com/p/go/ #Patch Set 4 : diff -r 46d573d68ee6 https://code.google.com/p/go/ #Patch Set 5 : diff -r 46d573d68ee6 https://code.google.com/p/go/ #Patch Set 6 : diff -r 46d573d68ee6 https://code.google.com/p/go/ #
Total comments: 4
Patch Set 7 : diff -r 46d573d68ee6 https://code.google.com/p/go #Patch Set 8 : diff -r 46d573d68ee6 https://code.google.com/p/go #Patch Set 9 : diff -r 46d573d68ee6 https://code.google.com/p/go #Patch Set 10 : diff -r 46d573d68ee6 https://code.google.com/p/go #Patch Set 11 : diff -r 46d573d68ee6 https://code.google.com/p/go #
Total comments: 12
Patch Set 12 : diff -r 95cc2b2ebec5 https://code.google.com/p/go/ #
MessagesTotal messages: 12
|