View Issue Details

IDProjectCategoryView StatusLast Update
0000267XdebugUncategorizedpublic2007-06-09 23:00
Reporterflotsam Assigned Toderick  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionreopened 
Summary0000267: CLI segfaults when trace file is not writeable
DescriptionA script lets xdebug write a tracefile. Executed via Apache, xdebug sets owner.group of the tracefile to those of Apache (www-data.www-data on Debian) and permissions to 644.

Executing the same script via PHP CLI segfaults w/o any useful info. Strace shows its because the tracefile is not writeable. CLI executes as current user, which is not www-data.

It would be nice if xdebug terminates gracefully with an explanatory message instead of crashing ;)

Here's strace's last lines:

open("/tmp/init-parenchym.php.xt", O_RDWR|O_LARGEFILE) = -1 EACCES (Permission denied)
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
TagsNo tags attached.
Operating System
PHP Version5.2.1

Activities

derick

2007-05-13 19:17

administrator   ~0000612

I am quite positive this has been fixed in CVS already. For instructions on how to use the CVS version, see: http://xdebug.org/install.php#source

flotsam

2007-05-13 19:19

reporter   ~0000613

And as I see now, the same is true vice versa: CLI creates trace file, Apache is denied to overwrite it, child process segfaults.

(PHP Version is 5.2.2-1+b1)

flotsam

2007-05-13 19:35

reporter   ~0000614

RE: derick 2007-05-13 20:17

It's not. I just compiled the sources of 2.0.0RC4-dev and had the same bug as described above.

Besides, make test reports:
Number of tests : 87 69
Tests skipped : 18 ( 20.7%) --------
Tests warned : 0 ( 0.0%) ( 0.0%)
Tests failed : 69 ( 79.3%) (100.0%)
Tests passed : 0 ( 0.0%) ( 0.0%)
---------------------------------------------------------------------
Time taken : 22 seconds


AHEM?

derick

2007-05-22 21:46

administrator   ~0000626

I can not reproduce this:

derick@kossu:/home/httpd/html/test/xdebug$ cat bug267.php
<?php
xdebug_start_trace("/tmp/bug267test");

strlen( join( ", ", range( 1, 10 ) ) );
?>

derick@kossu:/home/httpd/html/test/xdebug$ php bug267.php

derick@kossu:/home/httpd/html/test/xdebug$ ls -l /tmp/bug267test.xt
-rw-r--r-- 1 derick derick 328 2007-05-22 22:36 /tmp/bug267test.xt

derick@kossu:/home/httpd/html/test/xdebug$ sudo chown root /tmp/bug267test.xt
Password or swipe finger:

derick@kossu:/home/httpd/html/test/xdebug$ ls -l /tmp/bug267test.xt
-rw-r--r-- 1 root derick 328 2007-05-22 22:36 /tmp/bug267test.xt

derick@kossu:/home/httpd/html/test/xdebug$ php bug267.php

derick@kossu:/home/httpd/html/test/xdebug$ date
Tue May 22 22:37:07 CEST 2007

derick@kossu:/home/httpd/html/test/xdebug$ ls -l /tmp/bug267test.*
-rw-r--r-- 1 derick derick 328 2007-05-22 22:37 /tmp/bug267test.04364d.xt
-rw-r--r-- 1 root derick 328 2007-05-22 22:36 /tmp/bug267test.xt

As you can see it did not overwrite the file, but instead saw that the file was not writable and created a file with a random bit in it; and no segfault.

When using autotrace:

derick@kossu:/home/httpd/html/test/xdebug$ php -dxdebug.auto_trace=1 bug267.php

derick@kossu:/home/httpd/html/test/xdebug$ php -dxdebug.auto_trace=1 bug267.php

derick@kossu:/home/httpd/html/test/xdebug$ ls -l /tmp/*.xt
-rw-r--r-- 1 derick derick 406 2007-05-22 22:45 /tmp/trace.1258863198.xt

derick@kossu:/home/httpd/html/test/xdebug$ sudo chown root /tmp/trace.1258863198.xt

derick@kossu:/home/httpd/html/test/xdebug$ php -dxdebug.auto_trace=1 bug267.php

derick@kossu:/home/httpd/html/test/xdebug$ ls -l /tmp/*.xt
-rw-r--r-- 1 derick derick 406 2007-05-22 22:45 /tmp/trace.1258863198.042ab7.xt
-rw-r--r-- 1 root derick 406 2007-05-22 22:45 /tmp/trace.1258863198.xt

flotsam

2007-06-07 19:56

reporter   ~0000651

Thanks for describing that procedure. I copied that step by step and again got that segfault. Hmm...

Checked out your latest sources, which are RC5-dev, and :) xdebug works as you described.

Well, it seems xdebug creates a new file every time, even if it could overwrite the last one. -- Which makes perfectly sense, 'cause that random part in the filename is, well, random. But over time it would fill up my tmp space...
dm@arawn:~/public_html$ php bug267.php
dm@arawn:~/public_html$ php bug267.php
dm@arawn:~/public_html$ php bug267.php
dm@arawn:~/public_html$ l /tmp/bug267test.*
-rw-r--r-- 1 dm dm 331 2007-06-07 20:50 /tmp/bug267test.02e29a.xt
-rw-r--r-- 1 dm dm 331 2007-06-07 20:50 /tmp/bug267test.03982e.xt
-rw-r--r-- 1 dm dm 331 2007-06-07 20:50 /tmp/bug267test.0c3175.xt
-rw-r--r-- 1 root dm 331 2007-06-07 20:40 /tmp/bug267test.xt

Thank you for xdebug

derick

2007-06-09 23:00

administrator   ~0000653

Cool, let's close it then.

Issue History

Date Modified Username Field Change
2007-05-13 19:10 flotsam New Issue
2007-05-13 19:17 derick Status new => resolved
2007-05-13 19:17 derick Resolution open => fixed
2007-05-13 19:17 derick Assigned To => derick
2007-05-13 19:17 derick Note Added: 0000612
2007-05-13 19:19 flotsam Note Added: 0000613
2007-05-13 19:35 flotsam Status resolved => feedback
2007-05-13 19:35 flotsam Resolution fixed => reopened
2007-05-13 19:35 flotsam Note Added: 0000614
2007-05-22 21:46 derick Note Added: 0000626
2007-06-07 19:56 flotsam Note Added: 0000651
2007-06-09 23:00 derick Status feedback => closed
2007-06-09 23:00 derick Note Added: 0000653
2016-07-31 12:36 derick Category Usage problems => Usage problems (Crashes)
2016-07-31 12:38 derick Category Usage problems (Crashes) => Usage problems (Wrong Results)
2020-03-12 16:35 derick Category Usage problems (Wrong Results) => Variable Display
2020-03-12 16:38 derick Category Variable Display => Uncategorized