php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #10738 socket functions cause php4 to segmentation fault
Submitted: 2001-05-08 15:57 UTC Modified: 2001-05-10 05:19 UTC
From: ngaugler at ngworld dot net Assigned:
Status: Closed Package: Sockets related
PHP Version: 4.0.5 OS: SunOS 5.7 Generic_106541-12 sun4
Private report: No CVE-ID: None
 [2001-05-08 15:57 UTC] ngaugler at ngworld dot net
I recently wanted to do socket based options with PHP4, so I downloaded PHP 4.0.5, compiled it fine.  However when I attempted to run the Ex2 Socket Example: Simple TCP/IP client located at http://www.php.net/manual/en/ref.sockets.php  PHP 4 core dumped:

./mysocket.cgi
X-Powered-By: PHP/4.0.5
Content-type: text/html


<h2>TCP/IP Connection</h2>
l core  
Segmentation fault (core dumped)

I recompiled PHP4 with the --enable-debug ('./configure' '--with-mysql=/usr/local/mysql' '--with-gd' '--with-zlib' '--with-png' '--with-xml' '--enable-ftp' '--enable-sockets' '--enable-discard-path' '--enable-debug') and analyzed the core:

gdb /home/usr/bin/php4 core 
GNU gdb 19981224
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "sparc-sun-solaris2.7"...(no debugging symbols found)...

warning: core file may not match specified executable file.
Core was generated by `/home/usr/bin/php4 ./mysocket.cgi'.
Program terminated with signal 11, Segmentation Fault.
Reading symbols from /usr/lib/libpam.so.1...(no debugging symbols found)...done.
Reading symbols from /usr/lib/libdl.so.1...(no debugging symbols found)...done.
Reading symbols from /usr/local/lib/libpng.so.2...(no debugging symbols found)...done.
Reading symbols from /usr/lib/libresolv.so.2...(no debugging symbols found)...done.
Reading symbols from /usr/lib/libm.so.1...(no debugging symbols found)...done.
Reading symbols from /usr/lib/libcrypt_i.so.1...(no debugging symbols found)...done.
Reading symbols from /usr/lib/libnsl.so.1...(no debugging symbols found)...done.
Reading symbols from /usr/lib/libsocket.so.1...(no debugging symbols found)...done.
Reading symbols from /usr/lib/libc.so.1...(no debugging symbols found)...done.
Reading symbols from /usr/local/lib/libucb.so.1...(no debugging symbols found)...done.
Reading symbols from /usr/lib/libelf.so.1...(no debugging symbols found)...done.
Reading symbols from /usr/lib/libgen.so.1...(no debugging symbols found)...done.
Reading symbols from /usr/lib/libmp.so.2...(no debugging symbols found)...done.
Reading symbols from /usr/platform/SUNW,Ultra-250/lib/libc_psr.so.1...(no debugging symbols found)...done.
Reading symbols from /usr/lib/nss_files.so.1...(no debugging symbols found)...done.
#0  0xff0b6dec in strlen ()
(gdb) bt
#0  0xff0b6dec in strlen ()
#1  0x797a4 in php_if_strerror ()
#2  0x17c704 in execute ()
#3  0x11d7c0 in zend_execute_scripts ()
#4  0x36414 in php_execute_script ()
#5  0x32c48 in main ()

If you truss it, this is the last thing you see:

open64("/etc/.name_service_door", O_RDONLY)     = 3
fcntl(3, F_SETFD, 0x00000001)                   = 0
door_info(3, 0xFF13A460)                        = 0
door_call(3, 0xFFBEBE78)                        = 0
so_socket(2, 2, 0, "", 1)                       = 4
    Incurred fault #6, FLTBOUNDS  %pc = 0xFF0B6DEC
      siginfo: SIGSEGV SEGV_MAPERR addr=0x00000000
    Received signal #11, SIGSEGV [default]
      siginfo: SIGSEGV SEGV_MAPERR addr=0x00000000
        *** process killed ***

Please let me know what other information you may need.

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-05-08 16:34 UTC] sniper@php.net
I think the '--enable-debug' didn't get accounted for. 
Please try deleting config.cache and reconfigure/compile PHP again.

Then generate that gdb bactrace. Hopefully it will have more info in it.

--Jani

 [2001-05-09 00:42 UTC] ngaugler at ngworld dot net
Ok, I think the problem was I was strip'ing the binary before moving it around.  Try this:

gdb ./php core 
GNU gdb 19981224
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "sparc-sun-solaris2.7"...

warning: core file may not match specified executable file.
Core was generated by `./php ./mysocket.cgi'.
Program terminated with signal 11, Segmentation Fault.
Reading symbols from /usr/lib/libpam.so.1...done.
Reading symbols from /usr/lib/libdl.so.1...done.
Reading symbols from /usr/local/lib/libpng.so.2...done.
Reading symbols from /usr/lib/libresolv.so.2...done.
Reading symbols from /usr/lib/libm.so.1...done.
Reading symbols from /usr/lib/libcrypt_i.so.1...done.
Reading symbols from /usr/lib/libnsl.so.1...done.
Reading symbols from /usr/lib/libsocket.so.1...done.
Reading symbols from /usr/lib/libc.so.1...done.
Reading symbols from /usr/local/lib/libucb.so.1...done.
Reading symbols from /usr/lib/libelf.so.1...done.
Reading symbols from /usr/lib/libgen.so.1...done.
Reading symbols from /usr/lib/libmp.so.2...done.
Reading symbols from /usr/platform/SUNW,Ultra-250/lib/libc_psr.so.1...done.
Reading symbols from /usr/lib/nss_files.so.1...done.
#0  0xff0b6dec in strlen ()
(gdb) bt
#0  0xff0b6dec in strlen ()
#1  0x797a4 in php_if_strerror (ht=1, return_value=0x246618, this_ptr=0x0, return_value_used=1) at sockets.c:1097
#2  0x17c704 in execute ()
#3  0x11d7c0 in zend_execute_scripts (type=8, file_count=3) at zend.c:743
#4  0x36414 in php_execute_script (primary_file=0xffbefc58) at main.c:1209
#5  0x32c48 in main (argc=2, argv=0xffbefcfc) at cgi_main.c:730

 [2001-05-10 05:19 UTC] sniper@php.net
This should be fixed in CVS. Please try the latest snapshot
from http://snaps.php.net/

Reopen it still segfaults.

--Jani

 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Apr 19 17:01:30 2024 UTC