This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Patch] Mark the thread_event breakpoint as "not inserted" before calling thread_mourn_inferior


> As I suspected something is wrong with your host system, kernel,
> environment, or similar.  You may want to try a few others.
	Thanks for the reply. I tried gdb-6.4 on Fedora Core 3 & 4 and always
saw that problem. I further tried gdb-6.3 on the same m/c with same
configuration (only the gdb had changed )on which I had seen this
problem and it worked fine. 
	Then while investigating further about the different behaviour of the
two gdb's i.e. gdb-6.3 and gdb-6.4 I found one difference that gdb-6.3
doesn't have a function called thread_db_xfer_partial.

	The following call trace is same for both the gdbs 

#11 0x08131c24 in target_write_memory (memaddr=4626416, myaddr=0x95a7618
"U",
            len=1) at ../../src/gdb/target.c:1013
#12 0x081305a2 in default_memory_remove_breakpoint (addr=4626416,
            contents_cache=0x95a7618 "U") at ../../src/gdb/mem-
break.c:78
#13 0x08124292 in gdbarch_memory_remove_breakpoint (gdbarch=0x9545f90,
            addr=4626416, contents_cache=0x95a7618 "U")
at ../../src/gdb/gdbarch.c:2960
#14 0x081305e0 in memory_remove_breakpoint (addr=4626416,
            contents_cache=0x95a7618 "U") at ../../src/gdb/mem-
break.c:91
#15 0x080cffdd in remove_breakpoint (b=0x95a7600, is=mark_inserted)
    at ../../src/gdb/breakpoint.c:1452
#16 0x080d82aa in delete_breakpoint (bpt=0x95a7558)
        at ../../src/gdb/breakpoint.c:6772
#17 0x080d4258 in remove_thread_event_breakpoints ()
            at ../../src/gdb/breakpoint.c:4295
#18 0x08096875 in thread_db_mourn_inferior ()
                at ../../src/gdb/linux-thread-db.c:1107
#19 0x0810da19 in handle_inferior_event (ecs=0xfefa4cb0)
                    at ../../src/gdb/infrun.c:1376
                    (More stack frames follow...)

	in target_write_memory, gdb-6.3 calls target_xfer_memory whereas
gdb-6.4 calls xfer_using_stratum this difference is there since
target_stack->to_xfer_partial is set to deafult_xfer_partial for gdb-6.3
whereas it is set to thread_db_xfer_partial for gdb-6.4
	So the further functions which are called for gdb-6.4 are
xfer_using_stratum -> target_xfer_partial -> thread_db_xfer_partial

And in thread_db_xfer_partial it checks whether the thread is alive or
not (target_thread_alive) and while doing so it tries to fetch registers
ptrace(PTRACE_GETREGS,.....) and fails.

	Kindly let me know what's wrong?

Thanks & Regards,
-Girish.
	




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]