From: willw at applied dot co dot uk Operating system: Windows XP SP2 PHP version: 5CVS-2006-11-23 (snap) PHP Bug Type: COM related Bug description: Use of com.typelib_file in PHP.ini STILL causes A/V
Description: ------------ Use of the com.typelib_file to set a text file containing a list of typelibs causes PHP to crash with an A/V at startup. This is a sequel to Bug #38400 which was raised 09/08/2006 and closed 18/10/2006 with report 'fixed in CVS'. Although very similar, it is a different bug. Reproduce code: --------------- Alter a working PHP.ini so that it sets com.typelib_file to point to a text file. To see the bug, the named file must exist, and contain at least one entry, and the entry *must* be a valid type library. (If it points to, eg, a text file, then the bug doesn't show.) My example uses a Windows type library I found in the Windows directory activeds.tlb. I chose this so that there is no need for the tester/fixer to search out a COM component, and so that suspicion didn't fall on my type library. (The tester may wish to check that his choice of test type library loads without problem in PHP 4; this one does.) PHP.ini: ... [COM] com.typelib_file = "C:/PHP/typelib_files.txt" ... contents of typelib_files.txt: C:\WinNt\System32\activeds.tlb Expected result: ---------------- I had hoped for no crash :-( Actual result: -------------- Here is a backtrace made with php5.2-win32-200611221530.zip 5d8b53ec() php5ts.dll!php_com_load_typelib_via_cache(char * search_string=0x0086761c, int codepage=0, int * cached=0x0140fd3c, void * * * tsrm_ls=0x012412f0) Line 242 C php5ts.dll!OnTypeLibFileUpdate(_zend_ini_entry * entry=0x0129d830, char * new_value=0x00000003, unsigned int new_value_length=54, void * mh_arg1=0x00000000, void * mh_arg2=0x00000000, void * mh_arg3=0x00000000, int stage=1, void * * * tsrm_ls=0x012412f0) Line 155 + 0x1f bytes C php5ts.dll!zend_ini_refresh_cache(_zend_ini_entry * p=0x0129d830, int stage=1, void * * * tsrm_ls=0x012412f0) Line 220 + 0x21 bytes C php5ts.dll!zend_hash_apply_with_argument(_hashtable * ht=0x0129a5d0, int (void *, void *, void * * *)* apply_func=0x00af9560, void * argument=0x00000001, void * * * tsrm_ls=0x012412f0) Line 692 + 0xa bytes C php5ts.dll!zend_ini_refresh_caches(int stage=1, void * * * tsrm_ls=0x012412f0) Line 227 + 0x26 bytes C php5ts.dll!zend_new_thread_end_handler(unsigned long thread_id=3676, void * * * tsrm_ls=0x012412f0) Line 526 + 0x8 bytes C php5ts.dll!allocate_new_resource(_tsrm_tls_entry * * thread_resources_ptr=0x0082244c, unsigned long thread_id=3676) Line 300 + 0x6 bytes C php5ts.dll!ts_resource_ex(int id=0, unsigned long * th_id=0x00000e5c) Line 362 C php5apache.dll!send_php(request_rec * r=0x00a07040, int display_source_mode=0, char * filename=0x00000000) Line 583 C php5apache.dll!send_parsed_php(request_rec * r=0x00a07040) Line 677 + 0xe bytes C ApacheCore.dll!6ff64bc7() [Frames below may be incorrect and/or missing, no symbols loaded for ApacheCore.dll] ApacheCore.dll!6ff74a73() ApacheCore.dll!6ff74746() ApacheCore.dll!6ff6be0f() [EMAIL PROTECTED]() + 0xc6 bytes [EMAIL PROTECTED]() + 0x40 bytes This snapshot version differed from PHP5.2 in that it did not die until I tried to run some code (PHP5.2 dies at startup, preventing Apache from starting. The snapshot only kills one thread.) So I suspect some lazy initialisation has been introduced since PHP5.2 was released. But I am confident it is the same bug between 5.2 and the snapshot. The com.typelib_file directive has not worked since V5.0 of PHP was released. Please, may I politely ask if there is any chance of whoever makes any further fix testing that it with some imported constants in PHP code before rereleasing? -- Edit bug report at http://bugs.php.net/?id=39606&edit=1 -- Try a CVS snapshot (PHP 4.4): http://bugs.php.net/fix.php?id=39606&r=trysnapshot44 Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=39606&r=trysnapshot52 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=39606&r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=39606&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=39606&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=39606&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=39606&r=needscript Try newer version: http://bugs.php.net/fix.php?id=39606&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=39606&r=support Expected behavior: http://bugs.php.net/fix.php?id=39606&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=39606&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=39606&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=39606&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=39606&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=39606&r=dst IIS Stability: http://bugs.php.net/fix.php?id=39606&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=39606&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=39606&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=39606&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=39606&r=mysqlcfg