aboutsummaryrefslogtreecommitdiff
path: root/libctf/ctf-create.c
diff options
context:
space:
mode:
authorHannes Domani <ssbssa@yahoo.de>2020-05-24 22:59:33 +0200
committerHannes Domani <ssbssa@yahoo.de>2020-05-27 19:15:53 +0200
commitac637ec30dd9a3b19a02d1967a80e4ddf739706e (patch)
treea30550c2b68d8865e23bb924a9b121e89b7f86b4 /libctf/ctf-create.c
parent198204a7f0255c0e25dcda6b7d6a72e666d689c1 (diff)
downloadgdb-ac637ec30dd9a3b19a02d1967a80e4ddf739706e.zip
gdb-ac637ec30dd9a3b19a02d1967a80e4ddf739706e.tar.gz
gdb-ac637ec30dd9a3b19a02d1967a80e4ddf739706e.tar.bz2
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.
Diffstat (limited to 'libctf/ctf-create.c')
0 files changed, 0 insertions, 0 deletions