php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #18813 Segfault variable swap
Submitted: 2002-08-08 15:32 UTC Modified: 2002-08-08 21:09 UTC
From: andersena at netscape dot net Assigned:
Status: Closed Package: Scripting Engine problem
PHP Version: 4.2.2 OS: Linux 2.4.18 (Mandrake 8.1)
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: andersena at netscape dot net
New email:
PHP Version: OS:

 

 [2002-08-08 15:32 UTC] andersena at netscape dot net
The following script causes a seg fault on the second loop iteration.

<?php
$data = array ("Line 1",
"Line 10");
foreach ($data as $subject)
{
$temp = "";
$temp = stripslashes ($subject);
$line = "$temp";
}
?>

Changing any element of the script will make it work properly. In my production script, removing stripslashes made everything work OK. However, I need stripslashes (am using DB query instead of an array).

I'm running Mandrake 8.1 on a Gateway E3400, Gateway E-3100, and Dell 2400.

This script segfaults on all of these machines when using PHP 4.2.2. If I use PHP 4.2.1, everything is fine. It makes no difference whether I'm running a standalone PHP or using Apache 1.3.26. The results are the same.

I use the same PHP.INI file for both versions (I don't replace/change it).

The core dump gives me the following information:

(gdb) bt
#0  0x401dc1da in free () from /lib/libc.so.6
#1  0x401dbf44 in free () from /lib/libc.so.6
#2  0x080f5c43 in shutdown_memory_manager (silent=0, clean_cache=0) at zend_alloc.c:468
#3  0x08066a3a in php_request_shutdown (dummy=0x0) at main.c:794
#4  0x080657cf in main (argc=2, argv=0xbffff7c4) at cgi_main.c:827
#5  0x401775b0 in __libc_start_main () from /lib/libc.so.6
(gdb)

Re-Compiling with --enable-debug results in no core file, and this message:

[Thu Aug  8 12:03:33 2002]  Script:  'test.php'
---------------------------------------
./zend_execute.c(445) : Block 0x082061A8 status:
zend_variables.c(44) : Actual location (location was relayed)
Beginning:      OK (allocated on string.c:2262, 7 bytes)
      End:      Overflown (magic=0x2A8FCC00 instead of 0x2A8FCC84)
                1 byte(s) overflown
---------------------------------------
Content-type: text/html


[Thu Aug  8 12:03:33 2002]  Script:  'test.php'
---------------------------------------
zend_execute_API.c(274) : Block 0x08206708 status:
zend_variables.c(44) : Actual location (location was relayed)
Beginning:      OK (allocated on string.c:2262, 8 bytes)
      End:      Overflown (magic=0x2A8FCC00 instead of 0x2A8FCC84)
                1 byte(s) overflown
---------------------------------------
string.c(2262) :  Freeing 0x0820672C (8 bytes), script=test.php
Last leak repeated 1 time

[EOM]

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2002-08-08 21:09 UTC] yohgaki@php.net
This bug has been fixed in CVS. You can grab a snapshot of the
CVS version at http://snaps.php.net/. In case this was a documentation 
problem, the fix will show up soon at http://www.php.net/manual/.
In case this was a PHP.net website problem, the change will show
up on the PHP.net site and on the mirror sites.
Thank you for the report, and for helping us make PHP better.

Your script works here. Try 4.3.0-dev, see if it fixed.
 
PHP Copyright © 2001-2026 The PHP Group
All rights reserved.
Last updated: Thu Oct 08 03:00:02 2026 UTC