Don't close thread handles provided by WaitForDebugEvent
I sometimes encountered a weird breakpoint failure when using start: (gdb) start Temporary breakpoint 2 at 0x40162d: file gdb-25911.c, line 4. Starting program: C:\src\tests\gdb-25911.exe Warning: Cannot insert breakpoint 2. Cannot access memory at address 0x401628 After trying a lot of combinations, I found a way to reproduce it: (gdb) file gdb-25987.exe Reading symbols from gdb-25987.exe... (gdb) start Temporary breakpoint 1 at 0x401638: file gdb-25987.cpp, line 13. Starting program: C:\src\tests\gdb-25987.exe Temporary breakpoint 1, main () at gdb-25987.cpp:13 13 int main() { (gdb) c Continuing. Program received signal SIGSEGV, Segmentation fault. MyClass::call (this=0x3d20d0) at gdb-25987.cpp:8 8 *(char*)(nullptr) = 1; (gdb) kill Kill the program being debugged? (y or n) y [Inferior 1 (process 1140) killed] (gdb) file gdb-25911.exe Load new symbol table from "gdb-25911.exe"? (y or n) y Reading symbols from gdb-25911.exe... (gdb) start Temporary breakpoint 2 at 0x40162d: file gdb-25911.c, line 4. Starting program: C:\src\tests\gdb-25911.exe Warning: Cannot insert breakpoint 2. Cannot access memory at address 0x401628 Command aborted. The actual failure was that ReadProcessMemory used a process handle that was no longer valid. And the underlying reason was that the windows_thread_info destructor closes a thread handle that was provided earlier by WaitForDebugEvent. But since this is not allowed (and it was actually already closed at this point, and the handle value reused), this closed another still-needed handle. gdb/ChangeLog: 2020-05-27 Hannes Domani <ssbssa@yahoo.de> * nat/windows-nat.c (windows_thread_info::~windows_thread_info): Don't close thread handle.
This commit is contained in:
parent
198204a7f0
commit
ac637ec30d
|
@ -1,3 +1,8 @@
|
|||
2020-05-27 Hannes Domani <ssbssa@yahoo.de>
|
||||
|
||||
* nat/windows-nat.c (windows_thread_info::~windows_thread_info):
|
||||
Don't close thread handle.
|
||||
|
||||
2020-05-27 Tom Tromey <tom@tromey.com>
|
||||
Simon Marchi <simon.marchi@efficios.com>
|
||||
|
||||
|
|
|
@ -51,7 +51,6 @@ bool ignore_first_breakpoint = false;
|
|||
|
||||
windows_thread_info::~windows_thread_info ()
|
||||
{
|
||||
CloseHandle (h);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Reference in New Issue