From:             cataphract
Operating system: Vista amd64
PHP version:      trunk-SVN-2010-10-07 (SVN)
Package:          Scripting Engine problem
Bug Type:         Bug
Bug description:On shared module unload: Unloading DLL containing an active 
critical section.

Description:
------------
When running PHP with App verifier, there's an exception on module unload.

Test script:
---------------
This happens with an empty script

Expected result:
----------------
No exception.

Actual result:
--------------
CommandLine:
C:\Users\Cataphract\Documents\SDK\php54dev\vc9\x86\php54-trunk\Debug_TS\php.exe

Symbol search path is:
SRV*C:\Users\Cataphract\AppData\Local\SYMBOLS*http://msdl.microsoft.com/download/symbols

Executable search path is: 

ModLoad: 00000000`00400000 00000000`00421000   php.exe 

ModLoad: 00000000`77950000 00000000`77ad6000   ntdll.dll

ModLoad: 00000000`77b10000 00000000`77c70000   ntdll32.dll

ModLoad: 00000000`75260000 00000000`752a5000  
C:\Windows\system32\wow64.dll

ModLoad: 00000000`75210000 00000000`7525e000  
C:\Windows\system32\wow64win.dll

ModLoad: 00000000`753e0000 00000000`753e9000  
C:\Windows\system32\wow64cpu.dll

(2e40.3150): Break instruction exception - code 80000003 (first chance)

ntdll!DbgBreakPoint:

00000000`77996060 cc              int     3

0:000> g

ModLoad: 00000000`77320000 00000000`7744d000   WOW64_IMAGE_SECTION

ModLoad: 00000000`76a40000 00000000`76b50000   WOW64_IMAGE_SECTION

ModLoad: 00000000`77320000 00000000`7744d000   NOT_AN_IMAGE

ModLoad: 00000000`77250000 00000000`7731d000   NOT_AN_IMAGE

ModLoad: 00000000`71ab0000 00000000`71ae1000  
C:\Windows\syswow64\verifier.dll

Page heap: pid 0x2E40: page heap enabled with flags 0x3.

AVRF: php.exe: pid 0x2E40: flags 0x80C43027: application verifier enabled

ModLoad: 00000000`72130000 00000000`72159000  
C:\Windows\SysWOW64\vrfcore.dll

ModLoad: 00000000`71900000 00000000`71951000  
C:\Windows\SysWOW64\vfbasics.dll

ModLoad: 00000000`76a40000 00000000`76b50000  
C:\Windows\syswow64\kernel32.dll

ModLoad: 00000000`10000000 00000000`106b9000  
C:\Users\Cataphract\Documents\SDK\php54dev\vc9\x86\php54-trunk\Debug_TS\php5ts_debug.dll

ModLoad: 00000000`76f20000 00000000`77065000  
C:\Windows\syswow64\ole32.dll

ModLoad: 00000000`77140000 00000000`771ea000  
C:\Windows\syswow64\msvcrt.dll

ModLoad: 00000000`76b50000 00000000`76be0000  
C:\Windows\syswow64\GDI32.dll

ModLoad: 00000000`75630000 00000000`75700000  
C:\Windows\syswow64\USER32.dll

ModLoad: 00000000`77070000 00000000`77136000  
C:\Windows\syswow64\ADVAPI32.dll

ModLoad: 00000000`76e00000 00000000`76ef0000  
C:\Windows\syswow64\RPCRT4.dll

ModLoad: 00000000`755a0000 00000000`75600000  
C:\Windows\syswow64\Secur32.dll

ModLoad: 00000000`76ef0000 00000000`76f1d000  
C:\Windows\syswow64\WS2_32.dll

ModLoad: 00000000`77ae0000 00000000`77ae6000   C:\Windows\syswow64\NSI.dll

ModLoad: 00000000`74ce0000 00000000`74d0c000  
C:\Windows\SysWOW64\DNSAPI.dll

ModLoad: 00000000`71980000 00000000`71aa4000  
C:\Windows\WinSxS\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.4148_none_2a4cbfc25558bcd3\MSVCR90D.dll

(2e40.3150): WOW64 breakpoint - code 4000001f (first chance)

First chance exceptions are reported before any exception handling.

This exception may be expected and handled.

ntdll32!DbgBreakPoint:

77b20004 cc              int     3

0:000:x86> g

ModLoad: 771f0000 77250000   C:\Windows\SysWOW64\IMM32.DLL

ModLoad: 75ba0000 75c68000   C:\Windows\syswow64\MSCTF.dll

ModLoad: 76df0000 76df9000   C:\Windows\syswow64\LPK.DLL

ModLoad: 75eb0000 75f2d000   C:\Windows\syswow64\USP10.dll

ModLoad: 751d0000 7520b000   C:\Windows\SysWOW64\rsaenh.dll

ModLoad: 74d70000 74d8e000   C:\Windows\SysWOW64\USERENV.dll

ModLoad: 01d30000 01d96000  
C:\Users\Cataphract\Documents\SDK\php54dev\vc9\x86\php54-trunk\Debug_TS\php_intl.dll

ModLoad: 4a800000 4a925000  
C:\Users\Cataphract\Documents\SDK\php54dev\vc9\x86\php54-trunk\Debug_TS\icuuc42.dll

ModLoad: 4ad00000 4bc48000  
C:\Users\Cataphract\Documents\SDK\php54dev\vc9\x86\php54-trunk\Debug_TS\icudt42.dll

ModLoad: 71350000 713f3000  
C:\Windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4974_none_50940634bcb759cb\MSVCR90.dll

ModLoad: 712c0000 7134e000  
C:\Windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4974_none_50940634bcb759cb\MSVCP90.dll

ModLoad: 06c10000 06d69000  
C:\Users\Cataphract\Documents\SDK\php54dev\vc9\x86\php54-trunk\Debug_TS\icuin42.dll





=======================================

VERIFIER STOP 00000201: pid 0x2E40: Unloading DLL containing an active
critical section. 



        4A91D150 : Critical section address.

        00C418C0 : Critical section initialization stack trace.

        04F56FE8 : DLL name address.

        4A800000 : DLL base address.





=======================================

This verifier stop is continuable.

After debugging it use `go' to continue.



=======================================



(2e40.3150): WOW64 breakpoint - code 4000001f (first chance)

First chance exceptions are reported before any exception handling.

This exception may be expected and handled.

vrfcore!VerifierStopMessageEx+0x4ca:

72133b61 cc              int     3

0:000:x86> !analyze -v

*******************************************************************************

*                                                                          
  *

*                        Exception Analysis                                
  *

*                                                                          
  *

*******************************************************************************



*** ERROR: Symbol file could not be found.  Defaulted to export symbols for
C:\Users\Cataphract\Documents\SDK\php54dev\vc9\x86\php54-trunk\Debug_TS\icuuc42.dll
- 

APPLICATION_VERIFIER_LOCKS_LOCK_IN_UNLOADED_DLL (201)

Unloading DLL containing an active critical section.

This stop is generated if a DLL has a global variable containing a critical
section

and the DLL is unloaded but the critical section has not been deleted. To
debug

this stop use the following debugger commands:

$ du parameter3 - to dump the name of the culprit DLL.

$ .reload dllname or .reload dllname = parameter4 - to reload the symbols
for that DLL.

$ !cs -s parameter1 - dump information about this critical section.

$ ln parameter1 - to show symbols near the address of the critical
section.

This should help identify the leaked critical section.

$ dps parameter2 - to dump the stack trace for this critical section
initialization. 

Arguments:

Arg1: 04f56fe800c418c0, Critical section address. 

Arg2: 000000004a800000, Critical section initialization stack trace. 

Arg3: 0000000000000000, DLL name address. 

Arg4: 0000000000000000, DLL base address. 



FAULTING_IP: 

vrfcore!VerifierStopMessageEx+4ca
[d:\avrf\source\base\avrf\avrf30\vrfcore\sdk.cpp @ 549]

72133b61 cc              int     3



EXCEPTION_RECORD:  ffffffffffffffff -- (.exr 0xffffffffffffffff)

ExceptionAddress: 0000000072133b61
(vrfcore!VerifierStopMessageEx+0x00000000000004ca)

   ExceptionCode: 4000001f (WOW64 breakpoint)

  ExceptionFlags: 00000000

NumberParameters: 1

   Parameter[0]: 0000000000000000



FAULTING_THREAD:  0000000000003150



PROCESS_NAME:  php.exe



ERROR_CODE: (NTSTATUS) 0x4000001f - Exception status code used by Win32 x86
emulation subsystem.



EXCEPTION_CODE: (Win32) 0x4000001f (1073741855) - <Unable to get error code
text>



EXCEPTION_PARAMETER1:  0000000000000000



NTGLOBALFLAG:  70



APPLICATION_VERIFIER_FLAGS:  0



CRITICAL_SECTION:  04f56fe800c418c0 -- (!cs -s 04f56fe800c418c0)



DEFAULT_BUCKET_ID:  VERIFIER_STOP_00000201



PRIMARY_PROBLEM_CLASS:  VERIFIER_STOP_00000201



BUGCHECK_STR: 
APPLICATION_FAULT_VERIFIER_STOP_00000201_VERIFIER_STOP_00000201



LAST_CONTROL_TRANSFER:  from 000000007190cb39 to 0000000072133b61



STACK_TEXT:  

00c2f468 7190cb39 7191b0c8 00000201 4a91d150
vrfcore!VerifierStopMessageEx+0x4ca
[d:\avrf\source\base\avrf\avrf30\vrfcore\sdk.cpp @ 549]

00c2f49c 71906f60 00000002 4a800000 00125000
vfbasics!AVrfpFreeMemLockChecks+0xd0
[d:\avrf\source\base\avrf\vrfcommon\critsect.c @ 1086]

00c2f4c0 7190fb9e 00000002 4a800000 00125000
vfbasics!AVrfpFreeMemNotify+0x2b
[d:\avrf\source\base\avrf\vrfcommon\support.c @ 1489]

00c2f4ec 77b86a68 04f56fe8 4a800000 00125000
vfbasics!AVrfpDllUnloadCallback+0x1a
[d:\avrf\source\base\avrf\vrfcommon\dlls.c @ 514]

00c2f510 77b64f3e 05b04f98 4a3b9f11 01d30000
ntdll32!AVrfDllUnloadNotification+0x7c

00c2f5b4 77b42deb 01d30000 00c2f5d8 4a3b9f5d ntdll32!LdrpUnloadDll+0x225

00c2f5f8 7190fb79 01d30000 00c2f700 00c2f628 ntdll32!LdrUnloadDll+0x46

00c2f60c 76a523c1 04f6bfe0 7efde000 00c2f700
vfbasics!AVrfpLdrUnloadDll+0x5d [d:\avrf\source\base\avrf\vrfcommon\dlls.c
@ 1374]

00c2f61c 101f21e4 01d30000 00c2f7f4 00c2f70c kernel32!FreeLibrary+0x76

00c2f700 1030205c 06bc6fa0 00c2f8e0 00c2f8ec
php5ts_debug!module_destructor+0xf4
[c:\users\cataphract\documents\sdk\php54dev\vc9\x86\php54-trunk\zend\zend_api.c
@ 2247]

00c2f7f4 10302224 10686040 06bc4fd0 00c2f9b8
php5ts_debug!zend_hash_apply_deleter+0x12c
[c:\users\cataphract\documents\sdk\php54dev\vc9\x86\php54-trunk\zend\zend_hash.c
@ 634]

00c2f8e0 101efe1c 10686040 00c2fa8c 00c2fa98
php5ts_debug!zend_hash_graceful_reverse_destroy+0x54
[c:\users\cataphract\documents\sdk\php54dev\vc9\x86\php54-trunk\zend\zend_hash.c
@ 671]

00c2f9b8 101e4a49 00c2fb70 00c2fa98 7efde000
php5ts_debug!zend_destroy_modules+0x5c
[c:\users\cataphract\documents\sdk\php54dev\vc9\x86\php54-trunk\zend\zend_api.c
@ 1782]

00c2fa8c 10376cc6 0566afe8 00c2fb78 00c2fb7c
php5ts_debug!zend_shutdown+0x49
[c:\users\cataphract\documents\sdk\php54dev\vc9\x86\php54-trunk\zend\zend.c
@ 783]

00c2fb70 00413d4a 0566afe8 00000000 00000000
php5ts_debug!php_module_shutdown+0x66
[c:\users\cataphract\documents\sdk\php54dev\vc9\x86\php54-trunk\main\main.c
@ 2202]

00c2ff30 00416258 00000001 05662fa0 055e8f10 php!main+0x1e7a
[c:\users\cataphract\documents\sdk\php54dev\vc9\x86\php54-trunk\sapi\cli\php_cli.c
@ 1452]

00c2ff80 0041609f 00c2ff94 76aceccb 7efde000 php!__tmainCRTStartup+0x1a8
[f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 586]

00c2ff88 76aceccb 7efde000 00c2ffd4 77b8d24d php!mainCRTStartup+0xf
[f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 403]

00c2ff94 77b8d24d 7efde000 4a3b9571 00000000
kernel32!BaseThreadInitThunk+0xe

00c2ffd4 77b8d45f 0041123f 7efde000 00000000
ntdll32!__RtlUserThreadStart+0x23

00c2ffec 00000000 0041123f 7efde000 00000000
ntdll32!_RtlUserThreadStart+0x1b





FOLLOWUP_IP: 

ntdll32!AVrfDllUnloadNotification+7c

77b86a68 3bf3            cmp     esi,ebx



SYMBOL_STACK_INDEX:  4



SYMBOL_NAME:  ntdll32!AVrfDllUnloadNotification+7c



FOLLOWUP_NAME:  MachineOwner



MODULE_NAME: ntdll32



IMAGE_NAME:  ntdll32.dll



DEBUG_FLR_IMAGE_TIMESTAMP:  49e03824



STACK_COMMAND:  ~0s ; kb



FAILURE_BUCKET_ID: 
VERIFIER_STOP_00000201_4000001f_ntdll32.dll!AVrfDllUnloadNotification



BUCKET_ID: 
X64_APPLICATION_FAULT_VERIFIER_STOP_00000201_VERIFIER_STOP_00000201_ntdll32!AVrfDllUnloadNotification+7c



WATSON_STAGEONE_URL: 
http://watson.microsoft.com/StageOne/php_exe/5_3_99_0/4cadd28a/vrfcore_dll/4_0_917_0/4a3653db/4000001f/00003b61.htm?Retriage=1



Followup: MachineOwner

---------



0:000:x86> !cs -s 04f56fe800c418c0

Cannot read DebugInfo adddress at 0x04f56fe800c418c0. Possible causes:

        - The critical section is not initialized, deleted or corrupted

        - The critical section was a global variable in a DLL that was unloaded

        - The memory is paged out

Cannot read structure field value at 0x04f56fe800c418c4, error 0

Cannot determine if the critical section is locked or not.

-----------------------------------------

Critical section   = 0x04f56fe800c418c0 (+0x4F56FE800C418C0)

DebugInfo          = 0x0000000000c418c0

No stack trace found.

-- 
Edit bug report at http://bugs.php.net/bug.php?id=53012&edit=1
-- 
Try a snapshot (PHP 5.2):            
http://bugs.php.net/fix.php?id=53012&r=trysnapshot52
Try a snapshot (PHP 5.3):            
http://bugs.php.net/fix.php?id=53012&r=trysnapshot53
Try a snapshot (trunk):              
http://bugs.php.net/fix.php?id=53012&r=trysnapshottrunk
Fixed in SVN:                        
http://bugs.php.net/fix.php?id=53012&r=fixed
Fixed in SVN and need be documented: 
http://bugs.php.net/fix.php?id=53012&r=needdocs
Fixed in release:                    
http://bugs.php.net/fix.php?id=53012&r=alreadyfixed
Need backtrace:                      
http://bugs.php.net/fix.php?id=53012&r=needtrace
Need Reproduce Script:               
http://bugs.php.net/fix.php?id=53012&r=needscript
Try newer version:                   
http://bugs.php.net/fix.php?id=53012&r=oldversion
Not developer issue:                 
http://bugs.php.net/fix.php?id=53012&r=support
Expected behavior:                   
http://bugs.php.net/fix.php?id=53012&r=notwrong
Not enough info:                     
http://bugs.php.net/fix.php?id=53012&r=notenoughinfo
Submitted twice:                     
http://bugs.php.net/fix.php?id=53012&r=submittedtwice
register_globals:                    
http://bugs.php.net/fix.php?id=53012&r=globals
PHP 4 support discontinued:          http://bugs.php.net/fix.php?id=53012&r=php4
Daylight Savings:                    http://bugs.php.net/fix.php?id=53012&r=dst
IIS Stability:                       
http://bugs.php.net/fix.php?id=53012&r=isapi
Install GNU Sed:                     
http://bugs.php.net/fix.php?id=53012&r=gnused
Floating point limitations:          
http://bugs.php.net/fix.php?id=53012&r=float
No Zend Extensions:                  
http://bugs.php.net/fix.php?id=53012&r=nozend
MySQL Configuration Error:           
http://bugs.php.net/fix.php?id=53012&r=mysqlcfg

Reply via email to