On 2008-Jun-04 11:26:02 -0400, Chuck Robey <[EMAIL PROTECTED]> wrote: >#3 0x08066467 in unlock_pack () at builtin-fetch.c:56 >#4 0x2848b5f3 in __cxa_finalize () from /lib/libc.so.7 >#5 0x2843b1aa in exit () from /lib/libc.so.7 >#6 0x0804b0e3 in handle_internal_command (argc=2, argv=0xffffffff) at >git.c:379 >#7 0x0804b7ed in main (argc=2, argv=Cannot access memory at address 0x12) at >git.c:414
__cxa_finalise() is part of the atexit() processing - the source comments imply it handles shared object destructors. >379 exit(run_command(p, argc, argv)); >380 } > >First I want to comment on that weird line 379, because while it >might work, it sure seems to me to be a very strange and wasteful way >to do a fork. There's no fork involved. It's just shorthand for: return_code = run_command(p, argc, argv); exit(return_code); By the time exit() is invoked, run_command() has completed. > Second, the second argument to handle_internal_command seems to >have been a argv=0xffffffff, which is very obviously a bad string >pointer Note that argv in main is also corrupt. I suspect gdb is confused by the level of optimisation being done by gcc. In a later posting, you indicate that there's a double-free bug. Possibly unlock_pack() is being registered as a destructor (or similar) _and_ is being explicitly called. Without studying the code, the solution is probably to either skip the explicit cleanup (leaving just the destructor processing) and/or flag freed data (ie NULL pointers after freeing them). -- Peter Jeremy Please excuse any delays as the result of my ISP's inability to implement an MTA that is either RFC2821-compliant or matches their claimed behaviour.
pgpAvGrQFOumj.pgp
Description: PGP signature