Crash in groupcompress during commit operation
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Bazaar |
Fix Released
|
High
|
John A Meinel | ||
2.0 |
Fix Released
|
High
|
John A Meinel |
Bug Description
While running "bzr commit" bzr.exe crashed (hard) with an access violation. I was able to save a crash dump and load it in Windbg, which indicated it was crashing in bzrlib_
I ran the same command again and it crashed in the same way. I then turn on some of the debug flags and ran it again, but this time it didn't crash! I'll attach the logs I've got anyway.
Is there anything I should do to make it easier to debug the crash if it occurs again?
This crash was with Bazaar 2.0.1 running on Windows XP SP3.
---
the stack trace claims to be
STACK_TEXT:
WARNING: Stack unwind information not available. Following frames may be wrong.
0012e4a8 01b02035 020f0080 03b7ebd0 01b08188 bzrlib_
0012e4f8 1e08f24b 03951a20 0378c918 00000000 bzrlib_
0012e514 1e03b442 0530b260 0378c918 00000000 python25!
0012e53c 1e03cf85 1e03d4a3 0012e56c 00000000 python25!
0012e540 1e03d4a3 0012e56c 00000000 015284e8 python25!
0012e58c 1e0d99db 00a434b0 1e071215 ffffffff python25!
0012e594 1e071215 ffffffff ffffffff 00000000 python25!
0012e5ac 1e03e3ed 07c92e78 00000000 01513420 python25!
0012e5e0 1e03a29c 015284e8 07c92e78 00000000 python25!
00332da0 00332d58 07c92e78 0000001a 00000000 python25!
00000000 00000000 00000000 00000000 00000000 0x332d58
Related branches
- Vincent Ladeuil: Approve
-
Diff: 73 lines (+20/-10)2 files modifiedNEWS (+5/-0)
bzrlib/diff-delta.c (+15/-10)
- Vincent Ladeuil: Approve
-
Diff: 73 lines (+20/-10)2 files modifiedNEWS (+5/-0)
bzrlib/diff-delta.c (+15/-10)
tags: | added: groupcompress pyrex win32 |
description: | updated |
Changed in bzr: | |
status: | In Progress → Fix Committed |
Changed in bzr: | |
milestone: | none → 2.1.0b4 |
status: | Fix Committed → Fix Released |
I'm guessing the stack trace is wrong. _groupcompress_ pyx!init_ groupcompress_ pyx+0x12b9
0012e4a8 01b02035 020f0080 03b7ebd0 01b08188 bzrlib_
"init_groupcomp ress_pyx" is the module load function.
It has gotten to the point of "Auto-packing ..." before it failed, which is long after we've imported the module.
Looking at the rest, it seems to be claiming that "instruction at 0x00 tried to read from 0x03b7f000 and failed". Though it would make a lot more sense if that was reversed, and we tried to read from a NULL pointer.
My quick guess is that this is an Out-of-memory failure that we didn't handle properly (malloc returns NULL but we don't check before returning, etc.)
I did some looking around, but all the places appear to do the right thing and check the return value of malloc. So the next thing to check is that if the callers all check their returns, but looking around everything seems ok.
You might be able to force the failure by running "bzr pack". You may not provoke the specific failure, but if you get an out-of-memory exception, then it is fairly likely that is the original failure.