ID: 46082 Updated by: [EMAIL PROTECTED] Reported By: shaunspiller at gmail dot com -Status: Open +Status: Assigned Bug Type: Streams related Operating System: Windows PHP Version: 5.2.6 -Assigned To: +Assigned To: pajoye
Previous Comments: ------------------------------------------------------------------------ [2008-09-15 00:06:20] [EMAIL PROTECTED] Probably that will fix the crash: http://felipe.ath.cx/diff/bug46082.diff (untested) ------------------------------------------------------------------------ [2008-09-14 23:19:38] shaunspiller at gmail dot com Description: ------------ Hello developers! I found what looks like a reproducible crash in the stream/sockets/thingy. I think... Code to reproduce: ------------------ <?php var_dump($s = stream_socket_server('tcp://0.0.0.0:1234', $errno, $errstr, 0)); var_dump(stream_set_blocking($s, false)); echo 'hello'; ?> The var_dumps and echo are not necessary to cause the problem, but just to show the tracing of the code. Expected result: ---------------- resource(5) of type (stream) bool(true) hello Actual result: -------------- resource(5) of type (stream) ...And then the darn thing just implodes -- doesn't even say goodbye, nevermind hello. If STREAM_SERVER_BIND is specified for the flags to stream_socket_server() then it works fine. Tested on all the PHP versions I had installed (using the CLI interface): 6.0.0-dev (Windows): crashes 5.2.6 (Windows): crashes 5.2.5 (Windows): crashes 5.2.3 (Windows): crashes 5.2.4-2ubuntu5.3 (Linux): no crash (typicial of Linux to be different huh? :) Backtrace what-cha-ma-call-it: ------------------------------ (This was generated with PHP 5.2.6.) Thread 0 - System ID 2864 Entry point php!mainCRTStartup Create time 2008-09-13 23:00:03 Time spent in user mode 0 Days 0:0:0.46 Time spent in kernel mode 0 Days 0:0:0.31 Function Arg 1 Arg 2 Arg 3 Source php5ts!xbuf_format_converter+68a 00c0f978 102c178d 00c0fa04 php5ts!vspprintf+29 00c0f9b0 00000000 102c178c php5ts!php_verror+4d 00000000 102c169c 00000002 php5ts!php_error_docref0+23 00000000 00f11d10 00000002 php5ts!php_set_sock_blocking+45 ffffffff 00000001 00f11d10 php5ts!php_sockop_set_option+121 011ee248 00000001 00000000 php5ts!php_tcp_sockop_set_option+56e 011ee248 00000001 00000000 php5ts!_php_stream_set_option+2c 011ee248 00000001 00000000 php5ts!zif_stream_set_blocking+10c 011e28f8 011ee1a0 00000000 php5ts!zend_do_fcall_common_helper_SPEC+7d9 00c0fbd0 00f11d10 011ed67f php5ts!ZEND_DO_FCALL_SPEC_CONST_HANDLER+e5 00000000 00f11d10 00f11d10 php5ts!execute+1c5 011ed6e0 00f11d10 00000000 php5ts!zend_execute_scripts+107 00000008 00f11d10 00000000 php5ts!php_execute_script+20d 00c0fec8 00f11d10 00000000 php!main+c07 00000003 00f11d80 00f10c10 php!mainCRTStartup+e3 00000000 00000000 7ffde000 kernel32!IsProcessorFeaturePresent+9e 00402fc2 00000000 000000c1 PHP5TS!XBUF_FORMAT_CONVERTER+68AIn php__PID__2860__Date__09_13_2008__Time_11_00_07PM__202__Second_Chance_Exception_C0000005.dmp the assembly instruction at php5ts!xbuf_format_converter+68a in c:\Server\php\php5ts.dll from The PHP Group has caused an access violation exception (0xC0000005) when trying to read from memory location 0x00002736 on thread 0 (Actually, all I wanted to do was use SSL with the sockets extension. But it doesn't seem to support that so I switched my program to the stream_socket functions instead. But that doesn't seem to support raw sockets, except under stream_socket_pair() (What's the point of that function anyway? It doesn't let you connect to anything!). So I tried to use the context/options/params thing to set up a notification function so I could let stream_sockets notifications be sent directly to the handler functions while socket_select handles ordinary Berkeley sockets events, because I need them both, but I couldn't get the notification thing working at all, so I tried specifying the context directly when the listener socket was created, and that requires specifying the errno, errstr, and flags values as well, so I tried that. Well it was a real rollercoaster. It still didn't call the notifier, but it did crash, and that's how I found this muddle. If I was clever I would have tried to fix it myself but I couldn't find out where the actual the problem was. /end of rant) Anyway, I figured even though the problem only happens with incorrect values for the flags parameter, that I should report it anyway, just in case it's exploitable. I would have reported it yesterday but the bug reporting page seemed to be broken for hours, even though I kept trying again. Then I discovered that actually you just need cookies enabled for it to work. Ah well. Hope this stuff makes sense to someone. Bye!~ ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=46082&edit=1