
When creating a stack trace we should switch between the goroutine stack and the system stack (where cgo code is executed) as appropriate to reconstruct the logical stacktrace. Goroutines that are currently executing on the system stack will have the SystemStack flag set, frames of the goroutine stack will have a negative FrameOffset (like always) and frames of the system stack will have a positive FrameOffset (which is actually just the CFA value for the frame). Updates #935
24 lines
309 B
C
24 lines
309 B
C
#include <stdio.h>
|
|
|
|
#include "_cgo_export.h"
|
|
|
|
#define BREAKPOINT asm("int3;")
|
|
|
|
void helloworld_pt2(int x) {
|
|
BREAKPOINT;
|
|
helloWorld(x+1);
|
|
}
|
|
|
|
void helloworld(int x) {
|
|
helloworld_pt2(x+1);
|
|
}
|
|
|
|
void helloworld_pt4(int x) {
|
|
BREAKPOINT;
|
|
helloWorld2(x+1);
|
|
}
|
|
|
|
void helloworld_pt3(int x) {
|
|
helloworld_pt4(x+1);
|
|
}
|