php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #37428 php.exe crashing if unable to load any of configured extension dll
Submitted: 2006-05-13 10:43 UTC Modified: 2006-05-24 22:05 UTC
From: velkran-2 at yahoo dot com Assigned:
Status: Closed Package: *General Issues
PHP Version: 5.1.4 OS: Windows XP SP2
Private report: No CVE-ID: None
 [2006-05-13 10:43 UTC] velkran-2 at yahoo dot com
Description:
------------
php.exe will crash if any of configured extension dll cannot be found.
It can either incorrect extension_dir or just missing dll file.
From my point of view it is better to proper report this situation, not just crash.
As far as i can see usually php report this situation in error log.
I'v tried 5.1.4 and 5.1.2 with same results.


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-05-14 12:31 UTC] tony2001@php.net
Not enough information was provided for us to be able
to handle this bug. Please re-read the instructions at
http://bugs.php.net/how-to-report.php

If you can provide more information, feel free to add it
to this bug and change the status back to "Open".

Thank you for your interest in PHP.



 [2006-05-16 19:07 UTC] velkran-2 at yahoo dot com
Just to be sure, i did these steps:
1. Download php5.2-win32-200605161430.zip
2. Download php5.2-dbgpack-win32-latest.zip
3. unpack these 2 files to e:\php5.2
4. copy php.ini-recommended to php.ini
5. edit php.ini, uncomment line ;error_log = syslog
6. edit php.ini (to emulate "PHP Startup: Unable to load dynamic library" error)
Before:
;extension=php_bz2.dll
To:
extension=xphp_bz2.dll
7. change current directory to e:\php5.2
8. start php.exe
9. got usual windows GPF message, click "Debug" to create backtrace
Please find a Backtrace at the end of this comment.

As far as i can see there is some problem with windows event log reporting, basically it failes at this line:
	/* default event source */
--->	if (!PW32G(log_source))
		openlog("php", LOG_PID, LOG_SYSLOG);
I'm pretty that openlog was not called yet, i put a breakpoint on it. So failing somewhere inside mystical PW32G thing.
Hope this will be help.

A Backtrace (hope you will see it well-formatted):
	>	php5ts.dll!syslog(int priority=6, const char * message=0x102a6814, ...)  Line 91	C
 	php5ts.dll!php_log_err(char * log_message=0x009b1080, void * * * tsrm_ls=0x00324200)  Line 349 + 0x14	C
 	php5ts.dll!php_error_cb(int type=32, const char * error_filename=0x102967d0, const unsigned int error_lineno=0, const char * format=0x009b1080, char * args=0x00000001)  Line 763	C
 	php5ts.dll!zend_error(int type=32, const char * format=0x10296780, ...)  Line 948 + 0x17	C
 	php5ts.dll!php_verror(const char * docref=0x00000000, const char * params=0x10296690, int type=32, const char * format=0x0000000b, char * args=0x0000006d, void * * * tsrm_ls=0x00000000)  Line 573	C
 	php5ts.dll!php_error_docref0(const char * docref=0x00000000, void * * * tsrm_ls=0x00324200, int type=32, const char * format=0x10307754, ...)  Line 588 + 0x23	C
 	php5ts.dll!php_dl(_zval_struct * file=0x009f5610, int type=1, _zval_struct * return_value=0x0012fbe4, int start_now=0, void * * * tsrm_ls=0x00324200)  Line 142 + 0x26	C
 	php5ts.dll!php_load_function_extension_cb(void * arg=0x009f5610, void * * * tsrm_ls=0x00324200)  Line 236	C
 	php5ts.dll!zend_llist_apply(_zend_llist * l=0x104366d4, void (void *, void * * *)* func=0x100bcb50, void * * * tsrm_ls=0x00324200)  Line 191 + 0x7	C
 	php5ts.dll!php_ini_register_extensions(void * * * tsrm_ls=0x00324200)  Line 555	C
 	php5ts.dll!php_module_startup(_sapi_module_struct * sf=0x00405020, _zend_module_entry * additional_modules=0x00000000, unsigned int num_additional_modules=0)  Line 1563	C
 	php.exe!main(int argc=64, char * * argv=0x7ffde000)  Line 681 + 0x12	C
 	ntdll.dll!7c915b4f() 	
 	ntdll.dll!7c9131dc() 	
 	ntdll.dll!7c913212() 	
 	ntdll.dll!7c913281() 	
 	ntdll.dll!7c913288() 	
 	ntdll.dll!7c913288() 	
 	ntdll.dll!7c9106eb() 	
 	msvcrt.dll!77c2c3c9() 	
 	msvcrt.dll!77c2c3ce() 	
 	ntdll.dll!7c915b4f() 	
 	msvcrt.dll!77c3ac5f() 	
 	php.exe!_mainCRTStartup()  + 0xe3	
 	ntdll.dll!7c915b4f() 	
 	kernel32.dll!7c816d4f() 	
 	ntdll.dll!7c915b4f() 	
 	kernel32.dll!7c8399f3()
 [2006-05-22 09:29 UTC] velkran-2 at yahoo dot com
I was able to reproduce this problem on latest 5.2 snapshot
 [2006-05-22 09:30 UTC] velkran-2 at yahoo dot com
The workaround for this issue - is not use event log (on Windows)
 [2006-05-24 21:06 UTC] edink@php.net
What do you mean by do not use event log?

I don't get a crash I get:

PHP Warning:  PHP Startup: Unable to load dynamic library '.\php_xxx.dll' - The specified module could not be found.

 [2006-05-24 22:05 UTC] edink@php.net
This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.


 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Nov 21 08:01:29 2024 UTC