Edit report at https://bugs.php.net/bug.php?id=51382&edit=1

 ID:               51382
 Updated by:       [email protected]
 Reported by:      info at lategoodbye dot de
 Summary:          session_start() blocks execution
-Status:           Feedback
+Status:           No Feedback
 Type:             Bug
 Package:          Session related
 Operating System: Linux 2.4.35.4 mips
 PHP Version:      5.3.2

 New Comment:

No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Open". Thank you.


Previous Comments:
------------------------------------------------------------------------
[2012-03-31 09:06:08] info at lategoodbye dot de

In 2010, i could isolate the problem by writing my own session handler. The 
hanging appeared after the second call of the PHP function readdir(). The 
problem with readdir() could also reproduced outside the session handler:

Test script:

<?php

$dp = opendir("/tmp");

while (($file = readdir($dp)) !== FALSE)
{
    echo $file."< br>";
}

closedir($dp);

?>

Luckily the hanging didn't appear by using the DirectoryIterator. As a 
workaround, i written my own session handler with the DirectoryIterator.

------------------------------------------------------------------------
[2012-03-31 04:18:57] [email protected]

Do you still have this problem or resolved by yourself?

------------------------------------------------------------------------
[2010-05-04 10:55:46] info at lategoodbye dot de

Looking at the strace, i can see that the garbage collector is invoked, after 
the current session is locked.

Is it possible that the garbage collector hangs because of the locked session?

------------------------------------------------------------------------
[2010-03-31 16:29:40] info at lategoodbye dot de

I'm sorry, i didn't get gdb running on the Asus Router (Flash too small).

But i've a strace for you, may be it helps:

accept(0, {sa_family=AF_FILE, NULL}, [2]) = 3
poll([{fd=3, events=POLLIN}], 1, 5000)  = 1 ([{fd=3, revents=POLLIN}])
read(3, "\1\1\0\1\0\10\0\0", 8)         = 8
read(3, "\0\1\0\0\0\0\0\0", 8)          = 8
read(3, "\1\4\0\1\3H\0\0", 8)           = 8
read(3, "\17\17SERVER_SOFTWARElighttpd/1.4.25"..., 840) = 840
read(3, "\1\4\0\1\0\0\0\0", 8)          = 8
time(NULL)                              = 946686768
lstat("/www/pc/power.php", {st_mode=S_IFREG|0644, st_size=8269, ...}) = 0
lstat("/www/pc", {st_mode=0, st_size=97, ...}) = 0
lstat("/www", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
old_mmap(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0) = 
0x2afaa000
time(NULL)                              = 946686768
stat("/www/.user.ini", 0x7fff46e8)      = -1 ENOENT (No such file or directory)
stat("/www/pc/.user.ini", 0x7fff46e8)   = -1 ENOENT (No such file or directory)
setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={60, 0}}, NULL) = 0
rt_sigaction(SIGPROF, {0x10000000, [RT_68 RT_69 RT_76 RT_77 RT_79 RT_81 RT_82 
RT_83 RT_84 RT_85 RT_86 RT_87 RT_88 RT_89 RT_90 RT_91 RT_92 RT_93 RT_94], 
SA_SIGINFO|0x66b990}, {SIG_DFL, [RT_65 RT_66], 0}, 16) = 0
rt_sigprocmask(SIG_UNBLOCK, [PROF], NULL, 16) = 0
time(NULL)                              = 946686768
open("/www/pc/power.php", O_RDONLY)     = 4
ioctl(4, TIOCNXCL, 0x7fff5888)          = -1 ENOTTY (Inappropriate ioctl for 
device)
brk(0x956000)                           = 0x956000
fstat(4, {st_mode=S_IFREG|0644, st_size=2606, ...}) = 0
read(4, "<?php\n\nrequire_once(\"/www/power_"..., 4096) = 2606
_llseek(4, 0, [0], SEEK_SET)            = 0
getcwd("", 4095)                        = 9
chdir("\35\2")                          = 0
setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={30, 0}}, NULL) = 0
ioctl(4, TIOCNXCL, 0x7fff3678)          = -1 ENOTTY (Inappropriate ioctl for 
device)
fstat(4, {st_mode=S_IFREG|0644, st_size=2606, ...}) = 0
old_mmap(NULL, 2638, PROT_READ, MAP_PRIVATE, 718909632, 0) = 0x2aaae000
_llseek(4, 0, [0], SEEK_SET)            = 0
munmap(0x2aaae000, 2606)                = 0
close(4)                                = 0
time(NULL)                              = 946686768
lstat("/www/power_logic.inc.php", {st_mode=S_IFREG|0644, st_size=2385, ...}) = 0
time(NULL)                              = 946686768
open("/www/power_logic.inc.php", O_RDONLY) = 4
fstat(4, {st_mode=S_IFCHR|S_ISUID|030000554, st_rdev=makedev(0, 0), ...}) = 0
fstat(4, {st_mode=05273160660, st_size=720167216, ...}) = 0
fstat(4, {st_mode=0, st_size=0, ...})   = 0
old_mmap(NULL, 2385, PROT_READ, MAP_SHARED, 4, 0) = 0x2aaae000
munmap(0x2aaae000, 2385)                = 0
close(4)                                = 0
brk(0x957000)                           = 0x957000
time(NULL)                              = 946686768
lstat("/www/defines.inc.php", {st_mode=S_IFREG|0644, st_size=5087, ...}) = 0
time(NULL)                              = 946686768
open("/www/defines.inc.php", O_RDONLY)  = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=5087, ...}) = 0
fstat(4, {st_mode=0, st_size=0, ...})   = 0
fstat(4, {st_mode=S_IFREG|040000130, st_size=0, ...}) = 0
old_mmap(NULL, 5087, PROT_READ, MAP_SHARED, 4, 0) = 0x2aaae000
munmap(0x2aaae000, 5087)                = 0
close(4)                                = 0
brk(0x958000)                           = 0x958000
brk(0x959000)                           = 0x959000
time(NULL)                              = 946686769
lstat("/www/functions.inc.php", {st_mode=S_IFREG|0644, st_size=8586, ...}) = 0
time(NULL)                              = 946686769
open("/www/functions.inc.php", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=8586, ...}) = 0
fstat(4, {st_mode=S_IFREG|0644, st_size=18, ...}) = 0
fstat(4, {st_mode=S_IFREG|040000130, st_size=4, ...}) = 0
old_mmap(NULL, 8586, PROT_READ, MAP_SHARED, 4, 0) = 0x2aaae000
brk(0x95a000)                           = 0x95a000
munmap(0x2aaae000, 8586)                = 0
close(4)                                = 0
open("/tmp/sess_29fa4b85a40a392a7955de8cdc62d5f6", O_RDWR|O_CREAT, 0600) = 4
flock(4, LOCK_EX)                       = 0
fcntl(4, F_SETFD, FD_CLOEXEC)           = 0
fstat(4, {st_mode=S_IFSOCK|S_ISGID|05273600020, st_size=19, ...}) = 0
lseek(4, 0, SEEK_SET)                   = 0
read(4, "authentication|b:1;", 19)      = 19
gettimeofday({946686769, 156033}, NULL) = 0
getpid()                                = 789
gettimeofday({946686769, 156033}, NULL) = 0
open("/tmp", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = 5
fstat(5, {st_mode=S_IFDIR|S_ISVTX|0777, st_size=360, ...}) = 0
fcntl(5, F_SETFD, FD_CLOEXEC)           = 0
brk(0x95b000)                           = 0x95b000
time([946686769])                       = 946686769
getdents64(5, /* 18 entries */, 4096)   = 560
rt_sigprocmask(SIG_SETMASK, NULL, [RT_0], 16) = 0
rt_sigsuspend([]

------------------------------------------------------------------------
[2010-03-25 17:59:52] abca_b_cabcom at hotmail dot com

Maybe you can post your backtrace result here first, i just guess it is a 
compiler error, cause php_combined_lcg function should have no error.

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


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

    https://bugs.php.net/bug.php?id=51382


-- 
Edit this bug report at https://bugs.php.net/bug.php?id=51382&edit=1

Reply via email to