Professional Web Applications Themes

#27011 [Opn->Fbk]: Seg Fault During preg_match_all - PHP Development

ID: 27011 Updated by: net Reported By: ehicks at binarymagi dot com -Status: Open +Status: Feedback Bug Type: PCRE related Operating System: Solaris 9 PHP Version: 4CVS-2004-01-23 New Comment: Solaris has 'LD_LIBRARY_PATH' environment variable (it's actually common to all unix variants?) in which you can put any 'exotic' library paths. And FYI: with the configure line you provided in this bug report, you're NOT using the external PCRE library, the bundled PCRE 4.5 is used. Previous Comments: ------------------------------------------------------------------------ [2004-01-26 02:30:47] ehicks at binarymagi dot com Solaris does not have an ld.so.conf file so the LDFLAGS are manditory in order for ...

  1. #1

    Default #27011 [Opn->Fbk]: Seg Fault During preg_match_all

    ID: 27011
    Updated by: net
    Reported By: ehicks at binarymagi dot com
    -Status: Open
    +Status: Feedback
    Bug Type: PCRE related
    Operating System: Solaris 9
    PHP Version: 4CVS-2004-01-23
    New Comment:

    Solaris has 'LD_LIBRARY_PATH' environment variable (it's actually
    common to all unix variants?) in which you can put any 'exotic' library
    paths.

    And FYI: with the configure line you provided in this bug report,
    you're NOT using the external PCRE library, the bundled PCRE 4.5 is
    used.





    Previous Comments:
    ------------------------------------------------------------------------

    [2004-01-26 02:30:47] ehicks at binarymagi dot com

    Solaris does not have an ld.so.conf file so the LDFLAGS are manditory
    in order for the final module to execute properly.

    I did remove the CFLAGS, though, and it compiled and ran just fine. I
    also recompiled PCRE without the CFLAGS and it also seems alright.
    It's still crashes when I execute the preg_match_all, though.

    I have also tried this on a Linux server and it worked just fine so it
    must be something unique to Solaris or Ultrasparc systems. If someone
    would like an account on my server to experiment on I would be happy to
    give them one.

    ------------------------------------------------------------------------

    [2004-01-24 23:58:56] net

    I can not reproduce this crash in Linux.
    Try recompiling PHP without setting CFLAGS / LDFLAGs.


    ------------------------------------------------------------------------

    [2004-01-23 15:28:45] ehicks at binarymagi dot com

    Alright, I can do that.

    <?php preg_match_all('|(\w+)://([^\s"<]*[\w+#?/&=])|', "This is a text
    string", $matches, PREG_SET_ORDER); ?>

    That is straight out of IMP and consistantly crashes my server. Here
    is the backtrace that is creates:

    Program received signal SIGSEGV, Segmentation fault.
    0xffffffff7bad0cf4 in zend_p_arg_impl (arg=0x10038b528,
    va=0xffffffff7fffe118, spec=0xffffffff7fffe0e8)
    at /root/build/php4-STABLE-200401230430/Zend/zend_API.c:259
    259 *p =
    Z_LVAL_PP(arg);
    (gdb) bt
    #0 0xffffffff7bad0cf4 in zend_p_arg_impl (arg=0x10038b528,
    va=0xffffffff7fffe118, spec=0xffffffff7fffe0e8)
    at /root/build/php4-STABLE-200401230430/Zend/zend_API.c:259
    #1 0xffffffff7bad197c in zend_p_arg (arg_num=4, arg=0x10038b528,
    va=0xffffffff7fffe118,
    spec=0xffffffff7fffe0e8, quiet=0) at
    /root/build/php4-STABLE-200401230430/Zend/zend_API.c:439
    #2 0xffffffff7bad1e68 in zend_p_va_args (num_args=0,
    type_spec=0xffffffff7bb6b34c "ll",
    va=0xffffffff7fffe118, flags=0) at
    /root/build/php4-STABLE-200401230430/Zend/zend_API.c:524
    #3 0xffffffff7bad2254 in zend_p_parameters (num_args=4,
    type_spec=0xffffffff7bb6b348 "ssz|ll")
    at /root/build/php4-STABLE-200401230430/Zend/zend_API.c:551
    #4 0xffffffff7b94a3e4 in php_pcre_match (ht=4,
    return_value=0x100398fa0, this_ptr=0x0, return_value_used=0,
    global=1) at
    /root/build/php4-STABLE-200401230430/ext/pcre/php_pcre.c:374
    #5 0xffffffff7b94b480 in zif_preg_match_all (ht=4,
    return_value=0x100398fa0, this_ptr=0x0, return_value_used=0)
    at /root/build/php4-STABLE-200401230430/ext/pcre/php_pcre.c:607
    #6 0xffffffff7baec798 in execute (op_array=0x100394320)
    at /root/build/php4-STABLE-200401230430/Zend/zend_execute.c:1616
    #7 0xffffffff7bacfd4c in zend_execute_scripts (type=8, retval=0x0,
    file_count=3)
    at /root/build/php4-STABLE-200401230430/Zend/zend.c:884
    #8 0xffffffff7ba6faf8 in php_execute_script
    (primary_file=0xffffffff7fffef30)
    at /root/build/php4-STABLE-200401230430/main/main.c:1727
    #9 0xffffffff7baf581c in php_handler (r=0x1003840f0)
    at
    /root/build/php4-STABLE-200401230430/sapi/apache2handler/sapi_apache2.c:536
    #10 0x00000001000ac8a0 in ap_run_handler ()
    #11 0x00000001000ad798 in ap_invoke_handler ()
    #12 0x000000010007b6d0 in ap_process_request ()
    #13 0x00000001000712e4 in ap_process_http_connection ()
    #14 0x00000001000c55b8 in ap_run_process_connection ()
    #15 0x00000001000c5c18 in ap_process_connection ()
    #16 0x00000001000a8e28 in child_main ()
    #17 0x00000001000a9030 in make_child ()
    #18 0x00000001000a92a4 in startup_children ()
    #19 0x00000001000a9da8 in ap_mpm_run ()
    #20 0x00000001000b79d8 in main ()
    (gdb) print (char
    *)(executor_globals.function_state_ptr->function)->common.function_name
    $1 = 0xffffffff7bb6b530 "preg_match_all"
    (gdb) frame 6
    #6 0xffffffff7baec798 in execute (op_array=0x100394320)
    at /root/build/php4-STABLE-200401230430/Zend/zend_execute.c:1616
    1616
    ((zend_internal_function *)
    EX(function_state).function)->handler(EX(opline)->extended_value,
    EX(Ts)[EX(opline)->result.u.var].var.ptr, EX(object).ptr,
    return_value_used TSRMLS_CC);

    PCRE is v4.5, if that's important. You need anything else?

    ------------------------------------------------------------------------

    [2004-01-23 01:38:00] net

    Thank you for this bug report. To properly diagnose the problem, we
    need a short but complete example script to be able to reproduce
    this bug ourselves.

    A proper reproducing script starts with <?php and ends with ?>,
    is max. 10-20 lines long and does not require any external
    resources such as databases, etc.

    If possible, make the script source available online and provide
    an URL to it here. Try avoid embedding huge scripts into the report.

    (And no, we will NOT install IMP to test this)


    ------------------------------------------------------------------------

    [2004-01-22 14:53:37] ehicks at binarymagi dot com

    Description:
    ------------
    The error occurs when trying to view a message in Horde's IMP. My
    configure line is as follows:

    LDFLAGS="-L/usr/local/lib/sparcv9 -L/usr/local/lib -L/home/pgsql/lib
    -L/home/mysql/lib/mysql -L/usr/local/ssl/lib -R/usr/local/lib/sparcv9
    -R/usr/local/lib -R/home/pgsql/lib -R/home/mysql/lib/mysql
    -R/usr/local/ssl/lib" \
    CFLAGS="-mcpu=ultrasparc -Wa,-xarch=v9 -Wl,-R/usr/local/lib/sparcv9
    -Wl,-R/usr/local/lib -Wl,-R/usr/local/ssl/lib -Wl,-R/home/pgsql/lib
    -Wl,-R/home/mysql/lib/mysql" \
    ../configure \
    --host=sparcv9-sun-solaris2 \
    --prefix=/home/httpd/php \
    --with-apxs2=/home/httpd/bin/apxs \
    --with-openssl=/usr/local/ssl \
    --with-mhash=/usr/local \
    --with-mcrypt=/usr/local \
    --with-mysql=/home/mysql \
    --with-pgsql=/home/pgsql \
    --with-mm=/usr/local \
    --with-curl=/usr/local \
    --with-gd \
    --enable-memory-limit=yes \
    --enable-debug=no \
    --with-pear \
    --with-jpeg-dir=/usr/local \
    --with-png-dir=/usr/local \
    --enable-bcmath \
    --with-gdbm \
    --enable-ftp \
    --with-xpm-dir=/usr/local \
    --with-gettext \
    --with-zlib \
    --with-zlib-dir=/usr/local \
    --with-gnu-ld \
    --with-xml \
    --with-imap

    My IMAP server is from the Courier package and IMAP client is from WU's
    c-client v2002e

    Reproduce code:
    ---------------
    The code seems to be in the message.php in IMP.

    Expected result:
    ----------------
    I should see the message I requested

    Actual result:
    --------------
    [rootlurch httpd]# gdb /home/httpd/bin/httpd
    GNU gdb 5.3
    Copyright 2002 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 "sparcv9-sun-solaris2"...(no debugging
    symbols found)...
    (gdb) run -X
    Starting program: /home/httpd/bin/httpd -X
    (no debugging symbols found)...(no debugging symbols found)...(no
    debugging symbols found)...
    (no debugging symbols found)...


    ((Then I hit a page I knew would crash Apache))


    Program received signal SIGSEGV, Segmentation fault.
    0xffffffff7bacedcc in zend_p_arg_impl (arg=0x1003853d0,
    va=0xffffffff7ffe3a78, spec=0xffffffff7ffe3a48)
    at /root/build/php-4.3.4/Zend/zend_API.c:259
    259 *p =
    Z_LVAL_PP(arg);
    (gdb) bt
    #0 0xffffffff7bacedcc in zend_p_arg_impl (arg=0x1003853d0,
    va=0xffffffff7ffe3a78, spec=0xffffffff7ffe3a48)
    at /root/build/php-4.3.4/Zend/zend_API.c:259
    #1 0xffffffff7bacfa54 in zend_p_arg (arg_num=4, arg=0x1003853d0,
    va=0xffffffff7ffe3a78,
    spec=0xffffffff7ffe3a48, quiet=0) at
    /root/build/php-4.3.4/Zend/zend_API.c:439
    #2 0xffffffff7bacff40 in zend_p_va_args (num_args=0,
    type_spec=0xffffffff7bb6906c "ll",
    va=0xffffffff7ffe3a78, flags=0) at
    /root/build/php-4.3.4/Zend/zend_API.c:524
    #3 0xffffffff7bad032c in zend_p_parameters (num_args=4,
    type_spec=0xffffffff7bb69068 "ssz|ll")
    at /root/build/php-4.3.4/Zend/zend_API.c:551
    #4 0xffffffff7b9493cc in php_pcre_match (ht=4,
    return_value=0x1008c4c60, this_ptr=0x0, return_value_used=0,
    global=1) at /root/build/php-4.3.4/ext/pcre/php_pcre.c:375
    #5 0xffffffff7b94a464 in zif_preg_match_all (ht=4,
    return_value=0x1008c4c60, this_ptr=0x0, return_value_used=0)
    at /root/build/php-4.3.4/ext/pcre/php_pcre.c:608
    #6 0xffffffff7baea870 in execute (op_array=0x1008ac670) at
    /root/build/php-4.3.4/Zend/zend_execute.c:1616
    #7 0xffffffff7baeabe4 in execute (op_array=0x100884c20) at
    /root/build/php-4.3.4/Zend/zend_execute.c:1660
    #8 0xffffffff7baeabe4 in execute (op_array=0x1003a07d0) at
    /root/build/php-4.3.4/Zend/zend_execute.c:1660
    #9 0xffffffff7baeabe4 in execute (op_array=0x1003af0c0) at
    /root/build/php-4.3.4/Zend/zend_execute.c:1660
    #10 0xffffffff7baeabe4 in execute (op_array=0x10038f230) at
    /root/build/php-4.3.4/Zend/zend_execute.c:1660
    #11 0xffffffff7bacde24 in zend_execute_scripts (type=8, retval=0x0,
    file_count=3)
    at /root/build/php-4.3.4/Zend/zend.c:884
    #12 0xffffffff7ba6dd08 in php_execute_script
    (primary_file=0xffffffff7fffef20)
    at /root/build/php-4.3.4/main/main.c:1729
    #13 0xffffffff7baf3914 in php_handler (r=0x10037e6e0)
    at /root/build/php-4.3.4/sapi/apache2handler/sapi_apache2.c:537
    #14 0x00000001000ac8a0 in ap_run_handler ()
    #15 0x00000001000ad798 in ap_invoke_handler ()
    #16 0x000000010007b6d0 in ap_process_request ()
    #17 0x00000001000712e4 in ap_process_http_connection ()
    #18 0x00000001000c55b8 in ap_run_process_connection ()
    #19 0x00000001000c5c18 in ap_process_connection ()
    #20 0x00000001000a8e28 in child_main ()
    #21 0x00000001000a9030 in make_child ()
    #22 0x00000001000a92a4 in startup_children ()
    #23 0x00000001000a9da8 in ap_mpm_run ()
    #24 0x00000001000b79d8 in main ()
    (gdb) print (char
    *)(executor_globals.function_state_ptr->function)->common.function_name
    $1 = 0xffffffff7bb69250 "preg_match_all"
    (gdb) frame 6
    #6 0xffffffff7baea870 in execute (op_array=0x1008ac670) at
    /root/build/php-4.3.4/Zend/zend_execute.c:1616
    1616
    ((zend_internal_function *)
    EX(function_state).function)->handler(EX(opline)->extended_value,
    EX(Ts)[EX(opline)->result.u.var].var.ptr, EX(object).ptr,
    return_value_used TSRMLS_CC);
    (gdb) frame 7
    #7 0xffffffff7baeabe4 in execute (op_array=0x100884c20) at
    /root/build/php-4.3.4/Zend/zend_execute.c:1660
    1660
    zend_execute(EG(active_op_array) TSRMLS_CC);
    (gdb) frame 8
    #8 0xffffffff7baeabe4 in execute (op_array=0x1003a07d0) at
    /root/build/php-4.3.4/Zend/zend_execute.c:1660
    1660
    zend_execute(EG(active_op_array) TSRMLS_CC);
    (gdb) frame 9
    #9 0xffffffff7baeabe4 in execute (op_array=0x1003af0c0) at
    /root/build/php-4.3.4/Zend/zend_execute.c:1660
    1660
    zend_execute(EG(active_op_array) TSRMLS_CC);
    (gdb) frame 10
    #10 0xffffffff7baeabe4 in execute (op_array=0x10038f230) at
    /root/build/php-4.3.4/Zend/zend_execute.c:1660
    1660
    zend_execute(EG(active_op_array) TSRMLS_CC);


    If you need anything more, please email me directly as, for some
    reason, I can't access bugs.php.net from my computer. (Traceroue shows
    the link dieing at cr0.pc0.rdu.redundant.com) I am currently suffering
    through a lynx session on a server that can connect successfully.


    ------------------------------------------------------------------------


    --
    Edit this bug report at http://bugs.php.net/?id=27011&edit=1
    sniper@php.net Guest

  2. Moderated Post

    Default #27011 [Opn->Fbk]: Seg Fault During preg_match_all

    Removed by Administrator
    sniper@php.net Guest
    Moderated Post

  3. Moderated Post

    Default #27011 [Opn->Fbk]: Seg Fault During preg_match_all

    Removed by Administrator
    sniper@php.net Guest
    Moderated Post

  4. #4

    Default #27011 [Opn->Fbk]: Seg Fault During preg_match_all

    ID: 27011
    Updated by: net
    Reported By: ehicks at binarymagi dot com
    -Status: Open
    +Status: Feedback
    Bug Type: PCRE related
    Operating System: Solaris 9
    PHP Version: 4CVS-2004-01-23
    New Comment:

    Did you try with the configure line I gave?
    (don't forget also doing 'make clean' before 'make', I forgot that from
    it :)




    Previous Comments:
    ------------------------------------------------------------------------

    [2004-01-26 23:10:52] ehicks at binarymagi dot com

    Adding -DNO_RECURSE to PHP's compile didn't help either.

    ------------------------------------------------------------------------

    [2004-01-26 22:23:20] ehicks at binarymagi dot com

    Actually, it is. That configure line has been updated since I posted
    it. ldd shows that the new module is indeed using the libpcre from
    /usr/local/lib.

    I added the no_recurse to the PCRE build, though, not PHP. That's why
    I asked. I will try it in PHP and see what happens.

    ------------------------------------------------------------------------

    [2004-01-26 21:38:41] net

    You're missing the point: PHP is NOT using your external build PCRE
    lib! (given your configure line you added in your report)

    Try this for PHP:

    # rm config.cache ; CFLAGS=-DNO_RECURSE ./configure --disable-all
    --disable-cgi --with-pcre-regex && make

    Then try your script with the sapi/cli/php


    ------------------------------------------------------------------------

    [2004-01-26 20:44:27] ehicks at binarymagi dot com

    Added -DNO_RECURSE to PCRE's CFLAGS and it's still no-go. Same
    segfault, same gdb backtrace. You did mean to put no_recurse into the
    PCRE compile and not the PHP compile, right? Very frusterated, I
    managed to bypass the feature of IMP that was causing the problem so
    it's no longer inhibiting my progress. (It'd still be nice to get it
    working, though.)

    ------------------------------------------------------------------------

    [2004-01-26 19:52:21] net

    Regarding the LD_LIBRARY_PATH thing..PHP's configure does add the L/R
    switches. You don't need to do that. :)

    And about the PCRE prob..try adding -DNO_RECURSE into CFLAGS. (there is
    no configure option for this..special thingie. :)

    grep for NO_RECURSE in the pcre sources to see what it does..


    ------------------------------------------------------------------------

    The remainder of the comments for this report are too long. To view
    the rest of the comments, please view the bug report online at
    http://bugs.php.net/27011

    --
    Edit this bug report at http://bugs.php.net/?id=27011&edit=1
    sniper@php.net Guest

  5. #5

    Default #27011 [Opn->Fbk]: Seg Fault During preg_match_all

    ID: 27011
    Updated by: net
    Reported By: ehicks at binarymagi dot com
    -Status: Open
    +Status: Feedback
    Bug Type: PCRE related
    Operating System: Solaris 9
    PHP Version: 4CVS-2004-01-23
    New Comment:

    Is the gdb backtrace same (the first lines..) to the one you already
    have included here?



    Previous Comments:
    ------------------------------------------------------------------------

    [2004-01-26 23:30:13] ehicks at binarymagi dot com

    Yeah.

    [rootlurch cli]# ./php < crashphp.php
    Bus Error (core dumped)

    That's using:

    CFLAGS=-DNO_RECURSE ./configure --disable-all --disable-cgi
    --with-pcre-regex

    No idea what it's problem is. I can run more gdb tests on the core
    dump if you want.

    ------------------------------------------------------------------------

    [2004-01-26 23:13:21] net

    Did you try with the configure line I gave?
    (don't forget also doing 'make clean' before 'make', I forgot that from
    it :)



    ------------------------------------------------------------------------

    [2004-01-26 23:10:52] ehicks at binarymagi dot com

    Adding -DNO_RECURSE to PHP's compile didn't help either.

    ------------------------------------------------------------------------

    [2004-01-26 22:23:20] ehicks at binarymagi dot com

    Actually, it is. That configure line has been updated since I posted
    it. ldd shows that the new module is indeed using the libpcre from
    /usr/local/lib.

    I added the no_recurse to the PCRE build, though, not PHP. That's why
    I asked. I will try it in PHP and see what happens.

    ------------------------------------------------------------------------

    [2004-01-26 21:38:41] net

    You're missing the point: PHP is NOT using your external build PCRE
    lib! (given your configure line you added in your report)

    Try this for PHP:

    # rm config.cache ; CFLAGS=-DNO_RECURSE ./configure --disable-all
    --disable-cgi --with-pcre-regex && make

    Then try your script with the sapi/cli/php


    ------------------------------------------------------------------------

    The remainder of the comments for this report are too long. To view
    the rest of the comments, please view the bug report online at
    http://bugs.php.net/27011

    --
    Edit this bug report at http://bugs.php.net/?id=27011&edit=1
    sniper@php.net Guest

Similar Threads

  1. Replies: 7
    Last Post: March 26th, 11:47 AM
  2. #27011 [Fbk->Opn]: Seg Fault During preg_match_all
    By ehicks in forum PHP Development
    Replies: 5
    Last Post: January 27th, 09:57 PM
  3. #27011 [Opn->Fbk]: Seg Fault While View A Message In IMP
    By sniper@php.net in forum PHP Development
    Replies: 2
    Last Post: January 25th, 05:04 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139