|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #8761 read() on udp-sockets fails
Submitted: 2001-01-17 10:28 UTC Modified: 2001-06-02 21:08 UTC
From: mavetju at chello dot nl Assigned:
Status: Closed Package: Sockets related
PHP Version: 4.0.4 OS: FreeBSD 4.0
Private report: No CVE-ID: None
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please !
Your email address:
Solve the problem:
34 + 27 = ?
Subscribe to this entry?

 [2001-01-17 10:28 UTC] mavetju at chello dot nl


    printf("%d %02x %s\n",$numread,ord($readdata),$readdata);


When changing the 1 on read() to a different number, or when calling it multiple times, the read() function hangs due to an unknown reason (at least for me). This example tries to read from the echo-service, I encountered the problem when developing a radius-client in PHP.

This is the stack of the process:
#0  0x2825b794 in read () from /usr/lib/
#1  0x809dd78 in php_read (fd=4, buf=0x81e512c, maxlen=2) at sockets.c:640
#2  0x809df38 in php_if_read (ht=3, return_value=0x821768c, this_ptr=0x0,
    return_value_used=1) at sockets.c:692
#3  0x81121bc in execute (op_array=0x820948c) at ./zend_execute.c:1519
#4  0x80ea45b in zend_execute_scripts (type=8, file_count=3) at zend.c:729
#5  0x807c360 in php_execute_script (primary_file=0xbfbff408) at main.c:1221
#6  0x80f5eda in apache_php_module_main (r=0x821b034, display_source_mode=0)
    at sapi_apache.c:89
#7  0x8079cda in send_php ()
#8  0x8079d12 in send_parsed_php ()
#9  0x811c7f5 in ap_invoke_handler ()
#10 0x8130850 in process_request_internal ()
#11 0x81308ba in ap_process_request ()
#12 0x8127b2b in child_main ()
#13 0x8127db0 in make_child ()
#14 0x8128134 in perform_idle_server_maintenance ()
#15 0x8128659 in standalone_main ()
#16 0x8128c88 in main ()
#17 0x8062801 in _start ()

and info on the first two frames:
(gdb) up
#1  0x809dd78 in php_read (fd=4, buf=0x81e512c, maxlen=2) at sockets.c:640
640                       m = read(fd, (void *) t, 1);

(gdb) info locals
t = 0x81e512d "laat"
m = 1
n = 1
no_read = 1
nonblock = 0

(gdb) up
#2  0x809df38 in php_if_read (ht=3, return_value=0x821768c, this_ptr=0x0,
    return_value_used=1) at sockets.c:692

(gdb) info locals
ht = 136204588
return_value = (zval *) 0x821768c
fd = (zval **) 0x8216c0c
buf = (zval **) 0x8216c10
length = (zval **) 0x8216c14
binary = (zval **) 0x78b740
tmpbuf = 0x81e512c "blaat"
ret = 134864068
read_function = (int (*)()) 0x809dcc4 <php_read>
configure is ran with:
Configure Command './configure' '--with-apache=../apache_1.3.12' '--enable-track-vars' '--with-ndbm' '--with-db' '--with-mysql' '--enable-sockets'

If you need more information, feel free to ask me.



Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2001-06-02 21:08 UTC]
Please try the latest release candidate:

And note that using the undocumented 4th parameter
will make it behave like the system read():

read($sock, $buff, $length, PHP_BINARY_READ)


PHP Copyright © 2001-2022 The PHP Group
All rights reserved.
Last updated: Wed Jul 06 02:03:41 2022 UTC