Bug #8985 Updated: shm_put_var wont put the given var into memory

From: Date: Mon, 14 Jan 2002 17:26:00 +0000
Subject: Bug #8985 Updated: shm_put_var wont put the given var into memory
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-77034@lists.php.net to get a copy of this message
ID: 8985 Comment by: gik@zap.cl Old Reported By: fuf@mobil.cz Reported By: gik@zap.cl Status: Feedback Bug Type: Semaphore related Operating System: linux-2.2.18 PHP Version: 4.0.4pl1 New Comment: Hi! Forgot to explain my example :) In the Log file, "...added successfully to SHM..." means that shm_put_var() returned true. But the next time I call shm_get_var(), I get the following error: "variable key ... doesn't exist in bbb.php4 on line ..." Giancarlo. Previous Comments: ------------------------------------------------------------------------ [2002-01-14 12:19:45] gik@zap.cl I've been experiencing the same problem on a dual cpu server, even with PHP 4.1.1. Sometimes occurs that shm_put_var() doesn't correctly write data to SHM but returns true, and as I manage an array of online users in SHM, I have noticed that all users sometimes are dropped off. I also check semaphores before writing to SHM. 16:44:41 User aaa added successfully to SHM. (8104 bytes written) 16:45:54 User bbb added successfully to SHM. (8209 bytes written) 16:47:20 User bbb deleted successfully from SHM. (8104 bytes written) 16:47:31 User ccc added successfully to SHM. (8206 bytes written) 16:49:29 User ddd added successfully to SHM. (109 bytes written) I offer my help to debug this problem, Giancarlo Girardi ------------------------------------------------------------------------ [2002-01-14 02:24:57] lobbin@php.net Have you tried this with 4.1.1? ------------------------------------------------------------------------ [2001-01-29 12:27:07] fuf@mobil.cz hello, this is the same bug as described in #7046. a call to shm_put_var() returns true all the time, but checking whether the variable has been _really_ stored reveals that it hasn't. this doesn't happen on my 1 cpu box (i can't reproduce it however much i try), but on a loaded server with 4 cpus it happens pretty often. of course i call sem_acquire() before writing the variable into the shared memory, so it should be safe. i can supply the whole source in which this happens (445 lines) but basically it's just list this: $semid = sem_get($sem_key, 1); sem_acquire($semid); $var = shm_get_var($shmid, $var_key); // $var is an array // some change to $var, $var is still an array shm_put_var($shmid, $var_key, $var); if(!is_array(shm_get_var($shmid, $var_key))) echo "failed to write \$var :(\n"; sem_release($semid); could the problem be caused by the true multitasking on the 4 cpu server? thanks for any help with this, Michal Vitecek ------------------------------------------------------------------------ Edit this bug report at http://bugs.php.net/?id=8985&edit=1

« previous php.dev (#77034) next »