[PHP-DEV] Segfault on writing to shared memory block From: mike (mike <email protected>)
Date: 09/29/01

Hi,

my scripts look like this...

#!/usr/local/bin/php
<?php
   set_time_limit(0);
// Create 100 byte shared memory block with system id if 0xff3
$shm_id = shmop_open(0xf42, "c", 0777, 100);
if(!$shm_id) {
    echo "Couldn't create shared memory segment\n";
}

// Get shared memory block's size
$shm_size = shmop_size($shm_id);
echo "SHM Block Size: ".$shm_size. " has been created.\n";

// Lets write a test string into shared memory
$shm_bytes_written = shmop_write($shm_id, "my shared memory block", 0);
if($shm_bytes_written != strlen("my shared memory block")) {
    echo "Couldn't write the entire length of data\n";
}

// Now lets read the string back
while (substr($my_string,0,4)!="exit")
{
sleep(1);
$my_string = shmop_read($shm_id, 0, $shm_size);
if(!$my_string) {
    echo "Couldn't read from shared memory block\n";
}
echo "The data inside shared memory was: ".$my_string."\n";
}

//Now lets delete the block and close the shared memory segment
if(!shmop_delete($shm_id)) {
    echo "Couldn't mark shared memory block for deletion.";
}
shmop_close($shm_id);
  
?>

That sets up the shared memory and waits for the first four chars to
be set to "exit", then it should exit the loop and clean up.

The script that is supposed to set "exit" in the shared block is

#!/usr/local/bin/php
<?
$shm_id = shmop_open(0xf42, "a", 0, 0);
shmop_write($shm_id,"exit",0);
shmop_close($shm_id);
?>

It segfaults on the shmop_write line, every time.

I am using slackware 8, gcc 2.95.3. The shared memory shows up
fine on ipcs and the process that created it can write to it fine.
Is this a bug or am I doing something wrong?

Mike

-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: php-dev-unsubscribe <email protected>
For additional commands, e-mail: php-dev-help <email protected>
To contact the list administrators, e-mail: php-list-admin <email protected>