Professional Web Applications Themes

#39754 [NEW]: Some POSIX extension functions not thread safe - PHP Bugs

From: wharmby at uk dot ibm dot com Operating system: Linux RHEL4 PHP version: 5CVS-2006-12-06 (snap) PHP Bug Type: Unknown/Other Function Bug description: Some POSIX extension functions not thread safe Description: ------------ The current implementation of the following POSIX extension functions calls non-reentrant functions as follows: posix_ttynamee uses ttyname posix_getpwnam uses getpwnam posix_getgrnam uses getgrnam and therefore not thread safe. This will lead to unexpected behaviour when used in ZTS enabled builds. In all cases there are re-entrant versions of these functions available on *nix systems, namely ttyname_r getpwnam_r and getgrnam_r which should be used instead in order to ensure ...

  1. #1

    Default #39754 [NEW]: Some POSIX extension functions not thread safe

    From: wharmby at uk dot ibm dot com
    Operating system: Linux RHEL4
    PHP version: 5CVS-2006-12-06 (snap)
    PHP Bug Type: Unknown/Other Function
    Bug description: Some POSIX extension functions not thread safe

    Description:
    ------------
    The current implementation of the following POSIX extension
    functions calls non-reentrant functions as follows:

    posix_ttynamee uses ttyname
    posix_getpwnam uses getpwnam
    posix_getgrnam uses getgrnam

    and therefore not thread safe. This will lead to unexpected
    behaviour when used in ZTS enabled builds.

    In all cases there are re-entrant versions of these functions available on
    *nix systems, namely ttyname_r
    getpwnam_r and getgrnam_r which should be used instead in order to ensure
    thread safety.

    The following patch, which was built against the latest snapshot (Dec 6th,
    2006, 1130 GMT) modifies the code in
    ext/posix/posix.c to use the reentrant versions of these
    functions:

    [url]http://pastebin.ca/269334[/url]

    The following patch makes the necessary modification to the
    configure.in file to support the above change:

    [url]http://pastebin.ca/269335[/url]


    Andy Wharmby
    IBM United Kingdom Limited


    Reproduce code:
    ---------------
    Problem found by code inspection. As with most thread safety
    issues difficult to produce a simple testcase which will show
    a reproducible crash but current Linux executable is clearly not reentrant
    as it stands.

    Expected result:
    ----------------
    N/A

    Actual result:
    --------------
    N/A

    --
    Edit bug report at [url]http://bugs.php.net/?id=39754&edit=1[/url]
    --
    Try a CVS snapshot (PHP 4.4): [url]http://bugs.php.net/fix.php?id=39754&r=trysnapshot44[/url]
    Try a CVS snapshot (PHP 5.2): [url]http://bugs.php.net/fix.php?id=39754&r=trysnapshot52[/url]
    Try a CVS snapshot (PHP 6.0): [url]http://bugs.php.net/fix.php?id=39754&r=trysnapshot60[/url]
    Fixed in CVS: [url]http://bugs.php.net/fix.php?id=39754&r=fixedcvs[/url]
    Fixed in release: [url]http://bugs.php.net/fix.php?id=39754&r=alreadyfixed[/url]
    Need backtrace: [url]http://bugs.php.net/fix.php?id=39754&r=needtrace[/url]
    Need Reproduce Script: [url]http://bugs.php.net/fix.php?id=39754&r=needscript[/url]
    Try newer version: [url]http://bugs.php.net/fix.php?id=39754&r=oldversion[/url]
    Not developer issue: [url]http://bugs.php.net/fix.php?id=39754&r=support[/url]
    Expected behavior: [url]http://bugs.php.net/fix.php?id=39754&r=notwrong[/url]
    Not enough info: [url]http://bugs.php.net/fix.php?id=39754&r=notenoughinfo[/url]
    Submitted twice: [url]http://bugs.php.net/fix.php?id=39754&r=submittedtwice[/url]
    register_globals: [url]http://bugs.php.net/fix.php?id=39754&r=globals[/url]
    PHP 3 support discontinued: [url]http://bugs.php.net/fix.php?id=39754&r=php3[/url]
    Daylight Savings: [url]http://bugs.php.net/fix.php?id=39754&r=dst[/url]
    IIS Stability: [url]http://bugs.php.net/fix.php?id=39754&r=isapi[/url]
    Install GNU Sed: [url]http://bugs.php.net/fix.php?id=39754&r=gnused[/url]
    Floating point limitations: [url]http://bugs.php.net/fix.php?id=39754&r=float[/url]
    No Zend Extensions: [url]http://bugs.php.net/fix.php?id=39754&r=nozend[/url]
    MySQL Configuration Error: [url]http://bugs.php.net/fix.php?id=39754&r=mysqlcfg[/url]
    wharmby at uk dot ibm dot com Guest

  2. #2

    Default #39754 [Opn->Asn]: Some POSIX extension functions not thread safe

    ID: 39754
    Updated by: [email]iliaaphp.net[/email]
    Reported By: wharmby at uk dot ibm dot com
    -Status: Open
    +Status: Assigned
    Bug Type: Unknown/Other Function
    Operating System: Linux RHEL4
    PHP Version: 5CVS-2006-12-06 (snap)
    -Assigned To:
    +Assigned To: iliaa


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

    [2006-12-06 14:26:06] wharmby at uk dot ibm dot com

    Description:
    ------------
    The current implementation of the following POSIX extension
    functions calls non-reentrant functions as follows:

    posix_ttynamee uses ttyname
    posix_getpwnam uses getpwnam
    posix_getgrnam uses getgrnam

    and therefore not thread safe. This will lead to unexpected
    behaviour when used in ZTS enabled builds.

    In all cases there are re-entrant versions of these functions available
    on *nix systems, namely ttyname_r
    getpwnam_r and getgrnam_r which should be used instead in order to
    ensure thread safety.

    The following patch, which was built against the latest snapshot (Dec
    6th, 2006, 1130 GMT) modifies the code in
    ext/posix/posix.c to use the reentrant versions of these
    functions:

    [url]http://pastebin.ca/269334[/url]

    The following patch makes the necessary modification to the
    configure.in file to support the above change:

    [url]http://pastebin.ca/269335[/url]


    Andy Wharmby
    IBM United Kingdom Limited


    Reproduce code:
    ---------------
    Problem found by code inspection. As with most thread safety
    issues difficult to produce a simple testcase which will show
    a reproducible crash but current Linux executable is clearly not
    reentrant as it stands.

    Expected result:
    ----------------
    N/A

    Actual result:
    --------------
    N/A


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


    --
    Edit this bug report at [url]http://bugs.php.net/?id=39754&edit=1[/url]
    iliaa@php.net Guest

  3. #3

    Default #39754 [Asn->Csd]: Some POSIX extension functions not thread safe

    ID: 39754
    Updated by: [email]iliaaphp.net[/email]
    Reported By: wharmby at uk dot ibm dot com
    -Status: Assigned
    +Status: Closed
    Bug Type: Unknown/Other Function
    Operating System: Linux RHEL4
    PHP Version: 5CVS-2006-12-06 (snap)
    Assigned To: iliaa
    New Comment:

    This bug has been fixed in CVS.

    Snapshots of the sources are packaged every three hours; this change
    will be in the next snapshot. You can grab the snapshot at
    [url]http://snaps.php.net/[/url].

    Thank you for the report, and for helping us make PHP better.




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

    [2006-12-06 14:26:06] wharmby at uk dot ibm dot com

    Description:
    ------------
    The current implementation of the following POSIX extension
    functions calls non-reentrant functions as follows:

    posix_ttynamee uses ttyname
    posix_getpwnam uses getpwnam
    posix_getgrnam uses getgrnam

    and therefore not thread safe. This will lead to unexpected
    behaviour when used in ZTS enabled builds.

    In all cases there are re-entrant versions of these functions available
    on *nix systems, namely ttyname_r
    getpwnam_r and getgrnam_r which should be used instead in order to
    ensure thread safety.

    The following patch, which was built against the latest snapshot (Dec
    6th, 2006, 1130 GMT) modifies the code in
    ext/posix/posix.c to use the reentrant versions of these
    functions:

    [url]http://pastebin.ca/269334[/url]

    The following patch makes the necessary modification to the
    configure.in file to support the above change:

    [url]http://pastebin.ca/269335[/url]


    Andy Wharmby
    IBM United Kingdom Limited


    Reproduce code:
    ---------------
    Problem found by code inspection. As with most thread safety
    issues difficult to produce a simple testcase which will show
    a reproducible crash but current Linux executable is clearly not
    reentrant as it stands.

    Expected result:
    ----------------
    N/A

    Actual result:
    --------------
    N/A


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


    --
    Edit this bug report at [url]http://bugs.php.net/?id=39754&edit=1[/url]
    iliaa@php.net Guest

Similar Threads

  1. #40079 [NEW]: php_get_current_user() not thread safe
    By wharmby at uk dot ibm dot com in forum PHP Bugs
    Replies: 2
    Last Post: January 9th, 11:27 PM
  2. #39710 [NEW]: getprotobyname is not thread-safe
    By dave@php.net in forum PHP Bugs
    Replies: 0
    Last Post: December 1st, 10:57 PM
  3. Replies: 3
    Last Post: November 30th, 11:27 AM
  4. Thread-safe Code
    By Erik J Sawyer in forum ASP.NET Web Services
    Replies: 2
    Last Post: October 3rd, 05:06 PM
  5. ModRuby FileUploads thread safe?
    By George Moschovitis in forum Ruby
    Replies: 0
    Last Post: June 27th, 05:16 PM

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