Ok, I'm really stuck now. Of course I could just delete the entire proc that I was working on, but I was hoping that maybe somebody had some ideas?
Things that suck:
- VKim's debug macros seem unable to print a specific one-letter string that ebx points to. Then I get TWO GPF's instead of one.
- The crash point is in a GlobalAlloc call. I call it like this: invoke GlobalAlloc,GMEM_ZEROINIT or GMEM_FIXED,255.
- While debugging in OllyDbg I no longer get a GPF, but instead I get a "INT3 command in ntdll.DbgBreakPoint". Yay. That's really helpful.
Can anyone think of a situation that is even remotely possible that would cause something like this!?
Things that suck:
- VKim's debug macros seem unable to print a specific one-letter string that ebx points to. Then I get TWO GPF's instead of one.
- The crash point is in a GlobalAlloc call. I call it like this: invoke GlobalAlloc,GMEM_ZEROINIT or GMEM_FIXED,255.
- While debugging in OllyDbg I no longer get a GPF, but instead I get a "INT3 command in ntdll.DbgBreakPoint". Yay. That's really helpful.
Can anyone think of a situation that is even remotely possible that would cause something like this!?
I've gotten those before. I can't remember what caused it. It was something stupid like a missing ; in a perl script. You'll have to post your source (and exe) for any help.
The int 3 breakpoint is a debug feature for NT. You can continue stepping w/ F8 to get back to your app.
ps. GTP is a short cut for GFIXED || ZEROINIT
The int 3 breakpoint is a debug feature for NT. You can continue stepping w/ F8 to get back to your app.
ps. GTP is a short cut for GFIXED || ZEROINIT
I had a similar problem a few weeks ago. I was writing a routine to load a btmap and convert the colors to the correct color depth. The thing is the routine performed ok but in another routine when I called globalalloc in exactly the same way you are doing I kept get access violations. It turns out a pointer in the bitmaploading routine had strayed.
I found that changing
invoke GlobalAlloc,GMEM_ZEROINIT or GMEM_FIXED,255
to
invoke GlobalAlloc,GMEM_ZEROINIT or GMEM_MOVEABLE,255
invoke GlobalLock,eax
solved the problem with gloalalloc but then each time the mouse went passed over the window of the program I was working on it casused a GPF.
It wasn't until I'd found the errant pointer(as stated above) that the problem was truely resolved
it took me a couple of days to find!
I found that changing
invoke GlobalAlloc,GMEM_ZEROINIT or GMEM_FIXED,255
to
invoke GlobalAlloc,GMEM_ZEROINIT or GMEM_MOVEABLE,255
invoke GlobalLock,eax
solved the problem with gloalalloc but then each time the mouse went passed over the window of the program I was working on it casused a GPF.
It wasn't until I'd found the errant pointer(as stated above) that the problem was truely resolved
it took me a couple of days to find!
Well ok... thanks everyone. I guess I'll fix it sooner or later. It's just that it's really frustrating when something gets broken for no apparent reason.
Qweerdy, could you show me code where you tried to use debug macros?