Jianke
2007-03-21 06:31:00 UTC
I often come accross weird problem recently. :)
I got an "Memory block address" exception when executing
Shell "c:\arj.exe", 1
with AppVerifier, actually this statement is all of my test VB6 application.
However, if I change it to Shell "notepad.exe", 1 there is no error.
Eventually I found out it will come to an exception if it's a dos command
while no problem with win32 application. Is it a bug of MSVBVM60.dll?
Thanks in advance.
The detailed exception information:
0:000> !analyze -v
*******************************************************************************
*
*
* Exception Analysis
*
*
*
*******************************************************************************
APPLICATION_VERIFIER_MEM_ALREADY_FREE (60b)
Trying to free virtual memory block that is already free.
This stop is generated if the app verifier detects a VirtualFree for an
address
that is already free. To debug this stop look at the current stack trace
(kb)
and try to determine why the memory is already free but the application is
trying to free it again. "!avrf -vs -a parameter1" will search for a log
of
stack traces of the code paths that allocated/freed that address and
display
these stack traces if they are available. This might show the stack
trace that
freed up this memory.
Arguments:
Arg1: 03770000, Memory block address
Arg2: 00000000, Not used
Arg3: 00000000, Not used
Arg4: 00000000, Not used
FAULTING_IP:
ntdll!DbgBreakPoint+0
7c901230 cc int 3
EXCEPTION_RECORD: ffffffff -- (.exr ffffffffffffffff)
ExceptionAddress: 7c901230 (ntdll!DbgBreakPoint)
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 3
Parameter[0]: 00000000
Parameter[1]: 7c91eb05
Parameter[2]: 0012e5a9
FAULTING_THREAD: 00000328
BUGCHECK_STR: AVRF_60b
DEFAULT_BUCKET_ID: STATUS_BREAKPOINT
PROCESS_NAME: Project1.exe
ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION} Breakpoint A breakpoint
has been reached.
LAST_CONTROL_TRANSFER: from 00363760 to 7c901230
STACK_TEXT:
0012e664 00363760 0012dede 0038a370 7c910976 ntdll!DbgBreakPoint
0012e868 003931b7 00397d20 0000060b 03770000
vrfcore!VerifierStopMessageEx+0x4b5
0012e88c 003880b2 0000060b 00382fbc 03770000
vfbasics!VfBasicsStopMessage+0x157
0012e8f4 00387d05 ffffffff 00000001 03770000
vfbasics!AVrfpFreeVirtualMemNotify+0xa2
0012e920 7c867b64 ffffffff 0012ec94 0012e940
vfbasics!AVrfpNtFreeVirtualMemory+0xf5
0012e938 7c843174 00000000 0012ec90 7c819f71
kernel32!BaseDestroyVDMEnvironment+0x36
0012e944 7c819f71 0012f428 00000000 0346efe4
kernel32!CreateProcessInternalW+0x2153
0012f370 7c80235e 00000000 00000000 0346efe4
kernel32!CreateProcessInternalW+0x1e1a
0012f3a8 660ccebf 00000000 0346efe4 00000000 kernel32!CreateProcessW+0x2c
0012f438 00401beb 0012f4d0 00000001 0012f514 MSVBVM60!rtcShell+0x102
0012f508 66051fb3 02940fb8 0012f524 004015d8
Project1!Form1::Command1_Click+0x8b [C:\ShellTest\Form1.frm @ 31]
0012f524 660522b4 004015d8 0012f5e0 00000002 MSVBVM60!CallProcWithArgs+0x1e
0012f53c 6605239a 02940ff0 0012f620 0012f5e0 MSVBVM60!InvokeVtblEvent+0x32
0012f55c 66009da4 02940fd4 66065391 03606efc MSVBVM60!InvokeEvent+0xaf
0012f564 66065391 03606efc 0012f644 6605271b MSVBVM60!DESK::AddRef+0x13
0012f570 6605271b 0012f620 0012f5e0 00000002 MSVBVM60!DESK::AddCtlRef+0x16
00000000 00000000 00000000 00000000 00000000 MSVBVM60!EvtErrFireWorker+0x240
FOLLOWUP_IP:
MSVBVM60!rtcShell+102
660ccebf 8bf8 mov edi,eax
SYMBOL_STACK_INDEX: 9
SYMBOL_NAME: MSVBVM60!rtcShell+102
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: MSVBVM60
IMAGE_NAME: MSVBVM60.DLL
DEBUG_FLR_IMAGE_TIMESTAMP: 403acfec
STACK_COMMAND: ~0s ; kb
FAILURE_BUCKET_ID: AVRF_60b_MSVBVM60!rtcShell+102
BUCKET_ID: AVRF_60b_MSVBVM60!rtcShell+102
Followup: MachineOwner
---------
I got an "Memory block address" exception when executing
Shell "c:\arj.exe", 1
with AppVerifier, actually this statement is all of my test VB6 application.
However, if I change it to Shell "notepad.exe", 1 there is no error.
Eventually I found out it will come to an exception if it's a dos command
while no problem with win32 application. Is it a bug of MSVBVM60.dll?
Thanks in advance.
The detailed exception information:
0:000> !analyze -v
*******************************************************************************
*
*
* Exception Analysis
*
*
*
*******************************************************************************
APPLICATION_VERIFIER_MEM_ALREADY_FREE (60b)
Trying to free virtual memory block that is already free.
This stop is generated if the app verifier detects a VirtualFree for an
address
that is already free. To debug this stop look at the current stack trace
(kb)
and try to determine why the memory is already free but the application is
trying to free it again. "!avrf -vs -a parameter1" will search for a log
of
stack traces of the code paths that allocated/freed that address and
display
these stack traces if they are available. This might show the stack
trace that
freed up this memory.
Arguments:
Arg1: 03770000, Memory block address
Arg2: 00000000, Not used
Arg3: 00000000, Not used
Arg4: 00000000, Not used
FAULTING_IP:
ntdll!DbgBreakPoint+0
7c901230 cc int 3
EXCEPTION_RECORD: ffffffff -- (.exr ffffffffffffffff)
ExceptionAddress: 7c901230 (ntdll!DbgBreakPoint)
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 3
Parameter[0]: 00000000
Parameter[1]: 7c91eb05
Parameter[2]: 0012e5a9
FAULTING_THREAD: 00000328
BUGCHECK_STR: AVRF_60b
DEFAULT_BUCKET_ID: STATUS_BREAKPOINT
PROCESS_NAME: Project1.exe
ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION} Breakpoint A breakpoint
has been reached.
LAST_CONTROL_TRANSFER: from 00363760 to 7c901230
STACK_TEXT:
0012e664 00363760 0012dede 0038a370 7c910976 ntdll!DbgBreakPoint
0012e868 003931b7 00397d20 0000060b 03770000
vrfcore!VerifierStopMessageEx+0x4b5
0012e88c 003880b2 0000060b 00382fbc 03770000
vfbasics!VfBasicsStopMessage+0x157
0012e8f4 00387d05 ffffffff 00000001 03770000
vfbasics!AVrfpFreeVirtualMemNotify+0xa2
0012e920 7c867b64 ffffffff 0012ec94 0012e940
vfbasics!AVrfpNtFreeVirtualMemory+0xf5
0012e938 7c843174 00000000 0012ec90 7c819f71
kernel32!BaseDestroyVDMEnvironment+0x36
0012e944 7c819f71 0012f428 00000000 0346efe4
kernel32!CreateProcessInternalW+0x2153
0012f370 7c80235e 00000000 00000000 0346efe4
kernel32!CreateProcessInternalW+0x1e1a
0012f3a8 660ccebf 00000000 0346efe4 00000000 kernel32!CreateProcessW+0x2c
0012f438 00401beb 0012f4d0 00000001 0012f514 MSVBVM60!rtcShell+0x102
0012f508 66051fb3 02940fb8 0012f524 004015d8
Project1!Form1::Command1_Click+0x8b [C:\ShellTest\Form1.frm @ 31]
0012f524 660522b4 004015d8 0012f5e0 00000002 MSVBVM60!CallProcWithArgs+0x1e
0012f53c 6605239a 02940ff0 0012f620 0012f5e0 MSVBVM60!InvokeVtblEvent+0x32
0012f55c 66009da4 02940fd4 66065391 03606efc MSVBVM60!InvokeEvent+0xaf
0012f564 66065391 03606efc 0012f644 6605271b MSVBVM60!DESK::AddRef+0x13
0012f570 6605271b 0012f620 0012f5e0 00000002 MSVBVM60!DESK::AddCtlRef+0x16
00000000 00000000 00000000 00000000 00000000 MSVBVM60!EvtErrFireWorker+0x240
FOLLOWUP_IP:
MSVBVM60!rtcShell+102
660ccebf 8bf8 mov edi,eax
SYMBOL_STACK_INDEX: 9
SYMBOL_NAME: MSVBVM60!rtcShell+102
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: MSVBVM60
IMAGE_NAME: MSVBVM60.DLL
DEBUG_FLR_IMAGE_TIMESTAMP: 403acfec
STACK_COMMAND: ~0s ; kb
FAILURE_BUCKET_ID: AVRF_60b_MSVBVM60!rtcShell+102
BUCKET_ID: AVRF_60b_MSVBVM60!rtcShell+102
Followup: MachineOwner
---------