Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
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-winehq
Commits
3fded30a
Commit
3fded30a
authored
Jul 04, 2019
by
Jacek Caban
Committed by
Alexandre Julliard
Jul 04, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: Fix debug event order in generate_startup_debug_events.
Signed-off-by:
Jacek Caban
<
jacek@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
6aaa2b23
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
13 additions
and
9 deletions
+13
-9
debugger.c
dlls/kernel32/tests/debugger.c
+0
-2
debugger.c
server/debugger.c
+13
-7
No files found.
dlls/kernel32/tests/debugger.c
View file @
3fded30a
...
...
@@ -290,7 +290,6 @@ static void process_attach_events(struct debugger_context *ctx)
if
(
ctx
->
ev
.
dwDebugEventCode
==
LOAD_DLL_DEBUG_EVENT
)
/* Vista+ reports ntdll.dll before reporting threads */
{
ok
(
ctx
->
ev
.
dwDebugEventCode
==
LOAD_DLL_DEBUG_EVENT
,
"dwDebugEventCode = %d
\n
"
,
ctx
->
ev
.
dwDebugEventCode
);
todo_wine
ok
(
ctx
->
ev
.
u
.
LoadDll
.
lpBaseOfDll
==
ntdll
,
"The first reported DLL is not ntdll.dll
\n
"
);
next_event
(
ctx
,
0
);
}
...
...
@@ -302,7 +301,6 @@ static void process_attach_events(struct debugger_context *ctx)
{
next_event
(
ctx
,
2000
);
if
(
ctx
->
ev
.
dwDebugEventCode
==
LOAD_DLL_DEBUG_EVENT
)
todo_wine_if
(
ctx
->
ev
.
u
.
LoadDll
.
lpBaseOfDll
==
ntdll
)
ok
(
ctx
->
ev
.
u
.
LoadDll
.
lpBaseOfDll
!=
ntdll
,
"ntdll.dll reported out of order
\n
"
);
}
while
(
ctx
->
ev
.
dwDebugEventCode
==
LOAD_DLL_DEBUG_EVENT
||
ctx
->
ev
.
dwDebugEventCode
==
UNLOAD_DLL_DEBUG_EVENT
);
ok
(
ctx
->
dll_cnt
>
2
,
"dll_cnt = %d
\n
"
,
ctx
->
dll_cnt
);
...
...
server/debugger.c
View file @
3fded30a
...
...
@@ -516,22 +516,28 @@ void generate_startup_debug_events( struct process *process, client_ptr_t entry
struct
list
*
ptr
;
struct
thread
*
thread
,
*
first_thread
=
get_process_first_thread
(
process
);
generate_debug_event
(
first_thread
,
CREATE_PROCESS_DEBUG_EVENT
,
&
entry
);
ptr
=
list_head
(
&
process
->
dlls
);
/* skip main module reported in create process event */
/* generate ntdll.dll load event */
if
(
ptr
&&
(
ptr
=
list_next
(
&
process
->
dlls
,
ptr
)))
{
struct
process_dll
*
dll
=
LIST_ENTRY
(
ptr
,
struct
process_dll
,
entry
);
generate_debug_event
(
first_thread
,
LOAD_DLL_DEBUG_EVENT
,
dll
);
}
/* generate creation events */
LIST_FOR_EACH_ENTRY
(
thread
,
&
process
->
thread_list
,
struct
thread
,
proc_entry
)
{
if
(
thread
==
first_thread
)
generate_debug_event
(
thread
,
CREATE_PROCESS_DEBUG_EVENT
,
&
entry
);
else
if
(
thread
!=
first_thread
)
generate_debug_event
(
thread
,
CREATE_THREAD_DEBUG_EVENT
,
NULL
);
}
/* generate dll events (in loading order, i.e. reverse list order) */
ptr
=
list_tail
(
&
process
->
dlls
);
while
(
ptr
!=
list_head
(
&
process
->
dlls
))
/* generate dll events (in loading order) */
while
(
ptr
&&
(
ptr
=
list_next
(
&
process
->
dlls
,
ptr
)))
{
struct
process_dll
*
dll
=
LIST_ENTRY
(
ptr
,
struct
process_dll
,
entry
);
generate_debug_event
(
first_thread
,
LOAD_DLL_DEBUG_EVENT
,
dll
);
ptr
=
list_prev
(
&
process
->
dlls
,
ptr
);
}
}
...
...
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