Try posting to the BUGS mailing list. /me quotes "For information on how your program can cause an asserion failure, see the Visual C++ documentation on asserts."
Or consult your VC+++ documentation... ROFL -----Original Message----- From: twitch [mailto:[EMAIL PROTECTED] Sent: Friday, July 18, 2003 4:56 AM To: [EMAIL PROTECTED] Subject: [PHP-INST] Debug Assertion deep inside php_execute_script() on an SAPI. Hi, I am trying to get a PHP 4.3.2 SAPI working on Windows. I am using Visual Studio 6.0 and am using the Debug Release (php4ts_debug.dll). I can successfully get the CLI (phpCLI.c) version of PHP working just fine using the same linking instructions as I do for my SAPI program. My SAPI is heavily based off the thttpd sample SAPI. Right now I am getting a "Microsoft Visual C++ Debug Library" assertion: --- Begin Dialog Contents --- Debug Assertion Failed! Program: c:\work\out\bin\phpServerHarness.exe File: fdopen.c Line: 54 Expression: _osfile(filedes) & FOPEN For information on how your program can cause an asserion failure, see the Visual C++ documentation on asserts. (Press Retry to debug the application). --- End Dialog Contents --- Here is the code from fdopen.c: --- Begin Code --- FILE * __cdecl _tfdopen ( int filedes, REG2 const _TSCHAR *mode ) { REG1 FILE *stream; int whileflag, tbflag, cnflag; _ASSERTE(mode != NULL); #if defined (_WIN32) _ASSERTE((unsigned)filedes < (unsigned)_nhandle); _ASSERTE(_osfile(filedes) & FOPEN); // <------------ THIS ASSERT if ( ((unsigned)filedes >= (unsigned)_nhandle) || !(_osfile(filedes) & FOPEN) ) return(NULL); #else /* defined (_WIN32) */ --- End Code --- This is the stack at the time of the assert: --- Begin Stack --- > MSVCRTD.DLL!_fdopen(int filedes=3, const char * mode=0x010d545c) Line 54 + 0x3f C php4ts_debug.dll!php_stdiop_cast(_php_stream * stream=0x010d5438, int castas=0, void * * ret=0x010ce738, void * * * tsrm_ls=0x00e39b90) Line 1580 + 0x16 C php4ts_debug.dll!_php_stream_cast(_php_stream * stream=0x010d5438, int castas=0, void * * ret=0x010ce738, int show_err=8, void * * * tsrm_ls=0x00e39b90) Line 2172 + 0x39 C php4ts_debug.dll!_php_stream_open_wrapper_as_file(char * path=0x00e87830, char * mode=0x102adfd4, int options=141, char * * opened_path=0x010ceb60, int __php_stream_call_depth=0, char * __zend_filename=0x102ae704, unsigned int __zend_lineno=762, char * __zend_orig_filename=0x00000000, unsigned int __zend_orig_lineno=0, void * * * tsrm_ls=0x00e39b90) Line 2718 + 0x18 C php4ts_debug.dll!php_fopen_wrapper_for_zend(const char * filename=0x00e87830, char * * opened_path=0x010ceb60) Line 762 + 0x31 C php4ts_debug.dll!open_file_for_scanning(_zend_file_handle * file_handle=0x010ceb58, void * * * tsrm_ls=0x00e39b90) Line 2982 + 0x16 C php4ts_debug.dll!compile_file(_zend_file_handle * file_handle=0x010ceb58, int type=2, void * * * tsrm_ls=0x00e39b90) Line 3081 + 0xd C php4ts_debug.dll!zend_execute_scripts(int type=8, void * * * tsrm_ls=0x00e39b90, _zval_struct * * retval=0x00000000, int file_count=3, ...) Line 865 + 0x12 C php4ts_debug.dll!php_execute_script(_zend_file_handle * primary_file=0x010ceb58, void * * * tsrm_ls=0x00e39b90) Line 1671 + 0x1b C phpServerHarness.exe!thttpd_module_main(int show_source=0, void * * * tsrm_ls=0x00e39b90) Line 534 + 0xe C phpServerHarness.exe!thttpd_real_php_request(void * * hc=0x00e38750, int show_source=0, void * * * tsrm_ls=0x00e39b90) Line 923 + 0xd C phpServerHarness.exe!phpcinterface_php_request(void * hc=0x00e38750, int show_source=0) Line 978 + 0x11 C phpServerHarness.exe!HTTPConnectionDataSourcePHP::primePump() Line 31 + 0xe C++ phpServerHarness.exe!HTTPConnection::handleCompleteRequest() Line 283 C++ phpServerHarness.exe!HTTPConnection::inspectIncoming() Line 363 C++ phpServerHarness.exe!SocketConnection::readAvailable() Line 72 C++ phpServerHarness.exe!SocketWatcher::run() Line 172 C++ phpServerHarness.exe!threadLaunchFunc(void * userArg=0x00d918f0) Line 25 C++ MSVCRTD.DLL!_threadstart(void * ptd=0x00e388f0) Line 173 + 0xd C KERNEL32.DLL!77e8758a() -- End Stack --- The place where I "lose track" (in terms of understanding) of what's happening is in: _php_open_wrapper_as_file() where it takes a phpstream returned from: php_stream_open_wrapper_rel() and does: if (php_stream_cast(stream, PHP_STREAM_AS_STDIO|PHP_STREAM_CAST_TRY_HARD|PHP_STREAM_CAST_RELEASE, (void**)&fp, REPORT_ERRORS) == FAILURE) to it. I don't really know "what" they're trying to do from then on, but it goes through a few functions (see stack) and ends up at that assert. The arguments to php_open_wrapper_as_file look correct (valid paths). I know this is a long shot, but if anyone can help me -- give me some kind of pointer on where or what to look for -- libraries, languages, ThreadSafe versus not ThreadSafe -- I'd really appreciate it. I've been stumped for days. I don't really know how to get more information on the code I'm looking at. thanks! twitch -- PHP Install Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Install Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php