Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
1ecef824
Commit
1ecef824
authored
Jan 03, 2012
by
Eric Pouech
Committed by
Alexandre Julliard
Jan 04, 2012
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dbghelp: When StackWalk fails to get any frame information, create a default one.
parent
ece423b8
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
11 additions
and
6 deletions
+11
-6
stack.c
programs/winedbg/stack.c
+11
-6
No files found.
programs/winedbg/stack.c
View file @
1ecef824
...
...
@@ -192,6 +192,7 @@ unsigned stack_fetch_frames(const CONTEXT* _ctx)
* it to avoid any damage
*/
CONTEXT
ctx
=
*
_ctx
;
BOOL
ret
;
HeapFree
(
GetProcessHeap
(),
0
,
dbg_curr_thread
->
frames
);
dbg_curr_thread
->
frames
=
NULL
;
...
...
@@ -208,11 +209,12 @@ unsigned stack_fetch_frames(const CONTEXT* _ctx)
sf
.
AddrFrame
.
Mode
=
AddrModeFlat
;
}
while
(
StackWalk64
(
be_cpu
->
machine
,
dbg_curr_process
->
handle
,
dbg_curr_thread
->
handle
,
&
sf
,
&
ctx
,
stack_read_mem
,
SymFunctionTableAccess64
,
SymGetModuleBase64
,
NULL
))
while
((
ret
=
StackWalk64
(
be_cpu
->
machine
,
dbg_curr_process
->
handle
,
dbg_curr_thread
->
handle
,
&
sf
,
&
ctx
,
stack_read_mem
,
SymFunctionTableAccess64
,
SymGetModuleBase64
,
NULL
))
||
nf
==
0
)
/* we always register first frame information */
{
dbg_curr_thread
->
frames
=
dbg_heap_realloc
(
dbg_curr_thread
->
frames
,
dbg_curr_thread
->
frames
=
dbg_heap_realloc
(
dbg_curr_thread
->
frames
,
(
nf
+
1
)
*
sizeof
(
dbg_curr_thread
->
frames
[
0
]));
dbg_curr_thread
->
frames
[
nf
].
addr_pc
=
sf
.
AddrPC
;
...
...
@@ -230,8 +232,11 @@ unsigned stack_fetch_frames(const CONTEXT* _ctx)
(
dbg_curr_thread
->
frames
[
nf
-
1
].
is_ctx_valid
&&
memcmp
(
&
dbg_curr_thread
->
frames
[
nf
-
1
].
context
,
&
ctx
,
sizeof
(
ctx
))));
nf
++
;
/* we've probably gotten ourselves into an infinite loop so bail */
if
(
nf
>
200
)
break
;
/* bail if:
* - we've (probably) gotten ourselves into an infinite loop,
* - or StackWalk failed on first frame
*/
if
(
nf
>
200
||
!
ret
)
break
;
}
dbg_curr_thread
->
curr_frame
=
-
1
;
dbg_curr_thread
->
num_frames
=
nf
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment