- for (line_number = 1; fgets(line, sizeof line, f); line_number++) {
- if (strstr(line, "[stack]")) {
- uintptr_t end;
- if (sscanf(line, "%*x-%"SCNxPTR, &end) != 1) {
- VLOG_WARN("%s:%d: parse error", file_name, line_number);
- continue;
- }
- fclose(f);
- return end;
- }
- }
- fclose(f);
-
- VLOG_WARN("%s: no stack found", file_name);
- return -1;
-}
-
-static uintptr_t
-stack_high(void)
-{
- static uintptr_t high;
- if (!high) {
- high = get_max_stack();
+ b->n_frames = backtrace(frames, BACKTRACE_MAX_FRAMES);
+ for (i = 0; i < b->n_frames; i++) {
+ b->frames[i] = (uintptr_t) frames[i];