Re: ext/sysvsem/sysvsem.c / Bug #17785 / PHP 4.2.3
| From: | Melvyn Sopacua | Date: | Tue, 23 Jul 2002 03:36:25 +0000 |
| Subject: | Re: ext/sysvsem/sysvsem.c / Bug #17785 / PHP 4.2.3 | ||
| References: | 1 | Groups: | php.dev php.qa |
| Request: | Send a blank email to php-dev+get-86100@lists.php.net to get a copy of this message | ||
Vergoz Michael said at 21:18 22-7-2002:
Currently sysvsem.c is incompatible with FreeBSD and when a semaphore is removed it crashes (using the example code in the notes for the documentation). are you sure that your fbsd kernel is configured for ?Yep - recompiled the kernel, with the values from i386/LINT as well as the suggestions made below (which I recall from the PostGres docs ? :-)). The problem is only with the removal - the rest of that code runs fine. I traced it to the IPC_STAT entry just before that. If un is passed as a pointer, it's changed by sem_ctl corrupting any subsequent calls to sem_ptr properties - notice the null pointer on this_ptr vs. a valid address on sem_ptr and the problem with calls to sem_ptr->semid. Passing un as a copy, fixes the issue, however I'm left with 20 bytes of memory unfreed: sapi/cli/php -f ./test_sysv.php Start. Got semaphore 4. Success aquire semaphore 4. Success to attach shared memory : 5. Write var1 to shared memory. Write var2 to shared memory. Read var1=Variable 1. Read var2=Variable 2. Semaphore 4 released. Shared memory successfully removed from SysV. semaphore removed successfully from SysV. End. /home/mdev/cvs/php4/ext/sysvsem/sysvsem.c(269) : Freeing 0x082945A4 (20 bytes), script=./test_sysv.php I've tried freeing un and buf, but they're not the issue. Any advice on what isn't freed, is appreciated :-) All in all - this makes detection of what to pass on what platform, quite a bit harder, as FreeBSD will accept a pointer to IPC_STAT during compilation and even run it, but then corrupts the whole thing.
check :Met vriendelijke groeten / With kind regards, IDG.nl Melvyn Sopacua Webmasteroptions SYSVSHM options SHMMAXPGS=8192 options SHMSEG=1024options SYSVSEM options SEMMNI=1024 options SEMMNS=2048 options SEMMNU=1024 options SEMMAP=1024----- Original Message ----- From: "Melvyn Sopacua" <msopacua@idg.nl> To: "Derick Rethans" <derick@php.net> Cc: "PHP QA Team" <php-qa@lists.php.net> Sent: Monday, July 22, 2002 9:03 PM Subject: [PHP-QA] ext/sysvsem/sysvsem.c / Bug #17785 / PHP 4.2.3 Hi, As a follow-up on my message for bug #17785, I'm not sure whether we can get this fixed, especially since I haven't heard/seen from the original developers of the extension on this issue. Currently sysvsem.c is incompatible with FreeBSD and when a semaphore is removed it crashes (using the example code in the notes for the documentation). This does not happen with BSD/OS and looking at the man page for FreeBSD, the passing of the union semun to sem_ctl is dependant on the command issued. SO - all in all - this will need proper attention and testing on different platforms, and I'm not sure there's enough time. Let me know what you would like to do with it. Met vriendelijke groeten / With kind regards, Webmaster IDG.nl Melvyn Sopacua <@Logan> I spent a minute looking at my own code by accident. <@Logan> I was thinking "What the hell is this guy doing?" http://www.geekissues.org/quotes/top50.html?6824 -- PHP Quality Assurance Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php --- Incoming mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.377 / Virus Database: 211 - Release Date: 15-7-2002