Gdb Cannot Insert Breakpoint Error Accessing
Contents |
| Forgot Password Login: [x] Bug14585 - "Error accessing memory address"
Gdb Cannot Insert Breakpoint Error Accessing Memory Address
when creating JIT internal breakpoint Summary: "Error accessing memory address" gdb cannot insert breakpoint cannot access memory at address when creating JIT internal breakpoint Status: RESOLVED DUPLICATE of bug 13987 Alias: None Product: gdb break cannot access memory at address gdb Classification: Unclassified Component: gdb (show other bugs) Version: HEAD Importance: P2 normal Target Milestone: --- Assignee: Not yet assigned to anyone URL: Keywords: Depends
Gdb Cannot Insert Breakpoint 0
on: Blocks: Reported: 2012-09-14 19:41 UTC by Sergio Durigan Junior Modified: 2012-09-17 18:37 UTC (History) CC List: 1 user (show) tromey See Also: Host: Target: Build: Last reconfirmed: Attachments Add an attachment (proposed patch, testcase, etc.) Note You need to log in before you can comment on or
Error In Re-setting Breakpoint 1: Cannot Access Memory At Address
make changes to this bug. Description Sergio Durigan Junior 2012-09-14 19:41:22 UTC I could not find an easy way to reproduce this bug so far. The only way I managed to do so was to: 1) git clone git://git.qemu.org/qemu.git 2) ./configure --enable-kvm --python=python2 --target-list=x86_64-softmmu --disable-uuid --disable-werror --enable-debug --enable-fdt # you will need to install the dependencies 3) gdb -q -ex 'run' /tmp/install-qemu/bin/qemu-system-x86_64 And you will see: Warning: Cannot insert breakpoint -1. Error accessing memory address 0x34e96c: Input/output error. Running git-bisect on gdb.git, I found the culprit as being: a7262466d02155f5f70422804e5971f8d5e78118 is the first bad commit commit a7262466d02155f5f70422804e5971f8d5e78118 Author: Tom Tromey
insert breakpoint -1. From: "Anmol P. Paralkar"
Gdb Cannot Access Memory At Address
number: -1) at the entry point address on a 'c', after a 'target remote'? (I am using a GDB stub at the remote end that resides in a hypervisor upon which guest OS'es run). I am using gdb-6.8.50.20090717; but, I suppose that this is general GDB behaviour. -------------------------------------------------------------------------------- https://sourceware.org/bugzilla/show_bug.cgi?id=14585 (gdb) target remote :12007 Remote debugging using :12007 warning: Loadable segment "cpu0_heap_stack" outside of ELF segments warning: Loadable segment "cpu1_heap_stack" outside of ELF segments warning: Loadable segment "cpu2_heap_stack" outside of ELF segments warning: Loadable segment "cpu3_heap_stack" outside of ELF segments warning: Loadable segment "cpu4_heap_stack" outside of ELF segments warning: Loadable segment "cpu5_heap_stack" outside of ELF segments warning: Loadable segment "cpu6_heap_stack" outside https://www.sourceware.org/ml/gdb/2009-07/msg00191.html of ELF segments warning: Loadable segment ".stats_heap" outside of ELF segments warning: Loadable segment ".dpa_mem" outside of ELF segments 0x0013c880 in ?? () (gdb) p $pc $1 = (void (*)()) 0x13c880 (gdb) c Continuing. Warning: Cannot insert breakpoint -1. Error accessing memory address 0x110000: Unknown error 18446744073709551615. -------------------------------------------------------------------------------- (The entry point is likely not mapped into the TLB at that stage and so it is really a visible problem, else it just does this silently without it getting any attention). I tried to work around the issue by using set remote-
Things LocationTech Long-Term Support PolarSys Science OpenMDM More Community Marketplace Events Planet Eclipse Newsletter Videos Participate Report a Bug Forums Mailing Lists Wiki IRC How to Contribute Working https://www.eclipse.org/forums/index.php/t/213210/ Groups Automotive Internet of Things LocationTech Long-Term Support PolarSys Science OpenMDM Toggle navigation Home Projects Forums Eclipse Community Forums Forum Search: Search Help Register Login Home http://reverseengineering.stackexchange.com/questions/8724/set-a-breakpoint-on-gdb-entry-point-for-stripped-pie-binaries-without-disabling Home» Language IDEs» C / C++ IDE (CDT)» Failed to execute MI command(Eclipse and GDT/MI woes) Show: Today's Messages :: Show Polls :: Message Navigator Failed to execute MI gdb cannot command [message #683459] Mon, 13 June 2011 19:47 Tom RoweMessages: 2Registered: June 2011 Junior Member I'm running Helios SR2 on RHEL6 32b with CDT 7.02, GDB common 7.0, IBM J9 VM 1.5.0. I'm trying to debug a C++ module across JNI from a JUnit. 1. I launch my "JUnit" debug config and successfully breakpoint immediately after my System.loadLibrary(mysharedlib). 2. I cannot insert breakpoint then launch my "C/C++ Attach to Application" debug config, which is defined as: - Application=Debug/libmysharedlib.so - Build config=debug - Debugger=gdb - Non-stop mode=off (although this setting makes no difference) This Attach to Application launches, I then attach it to javaw properly, and I see 13 suspended threads. 3. I then attempt to resume C++ thread #1 (state=suspended: user request) to no avail. - Entering "info break" from the gdb console correctly shows my breakpoint in the C++ code. Further, I can successfully display code in my C++ module, so I know I have debug info present. - Entering "c" from the gdb console gives: Warning: Cannot insert breakpoint 1. Error accessing memory address 0x2da6: Input/output error. 4. When I then attempt to resume the JUnit thread, I get the expected "org.eclipse.jdi.TimeoutException: Timeout occurred while waiting for packet 622. occurred resuming thread." as it appears all C++ threads are still suspended. The workspace/.metadata/.log yields messages like: !ENTRY org.eclipse.cdt.dsf 4 10005 2011-06-13 12:06:55.727 !MESSAGE Request for monitor: 'RequestMonitor (org.eclipse.cdt.dsf.concurrent.RequestMonitor@68446844): Status ERROR: org.eclipse.cdt.dsf.gdb code=10004 Failed to execute MI command: -exec-continue Error message
Tour Start here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site About Us Learn more about Stack Overflow the company Business Learn more about hiring developers or posting ads with us Reverse Engineering beta Questions Tags Users Badges Unanswered Ask Question _ Reverse Engineering Stack Exchange is a question and answer site for researchers and developers who explore the principles of a system through analysis of its structure, function, and operation. Join them; it only takes a minute: Sign up Here's how it works: Anybody can ask a question Anybody can answer The best answers are voted up and rise to the top Set a breakpoint on GDB entry point for stripped PIE binaries without disabling ASLR up vote 8 down vote favorite 3 Given a position-independent, statically-linked, stripped binary, there does not appear to be a way in GDB to set a breakpoint at the entry point without disabling ASLR. break start and similar functions do not work, because there is no symbolic information set stop-on-solib-events 1 does not work as the binary is not dynamically linked break *0xdeadbeef for the entry point does not work, as the entry point is unresolved until the binary starts catch load does not work, as it does not load any libraries start does not work, as main is not defined and no libraries are loaded Without patching the binary, what mechanism can I use to break at the first instruction executed? Possible? Since a now-deleted response to the question said that a PIE statically-linked binary is impossible, a trivial example is the linker itself. It is statically linked. $ ldd /lib/x86_64-linux-gnu/ld-2.19.so statically linked It is executable. $ strace /lib/x86_64-linux-gnu/ld-2.19.so execve("/lib/x86_64-linux-gnu/ld-2.19.so", ["/lib/x86_64-linux-gnu/ld-2.19.so"], [/* 96 vars */]) = 0 brk(0) = 0x7ff787b3d000 writev(2, [{"Usage: ld.so [OPTION]... EXECUTA"..., 1373}], 1Usage: ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...] It is position-independent. $ readelf -h /lib/x86_64-linux-gnu/ld-2.19.so | grep DYN Type: DYN (Shared object file) Solutions It looks like this can be done with Python by utilizing some of the events made available: http://asciinema.org/a/19078 However, I'd like a native-GDB solution. A successful solution will break at _start in ld.so when executed directly without disabling ASLR. It should look something like this: sh $ strip -s /lib/x86_64-linux-gnu/ld-2.19.so -o ld.so sh $ gdb ./ld.so (gdb) $ set disable-randomization off (gdb) $