I'm writing an ext for Apples OpenDirectory (directory services) API and it
makes heavy use of registering resources in the zend internal list. I'm also
new to the Zend API.
As of now I have about 4 resource types so far. In Short, my resource life
span goes like:
1. zend_register_list_destructors_ex(... for each resource in
ZEND_MINIT_FUNCTION()
2. register a resource and return it, RETURN_RESOURCE(zend_list_insert(rsrc,
le_rsrc));
3. upon user destruction function, zend_list_delete(Z_LVAL_P(z_rsrc));
4. resource destructor is called when deleted from the internal list, frees
all assoc memory allocated/closes any connections then uses efree to free up
memory alloced to the resource with emalloc.
My problem is, all my resources get deleted from the list and my destructors
are called an exit properly but at the end of my php script, while testing,
I get a bus error on the very last line. The backtrace boils down to
shutdown_memory_manager. My thoughts are that I must have something wrong in
the destruction of resources, does anyone know what would cause the bus
error in shutdown_memory_manager? A backtrace is below, I can also provide
more detailed code snippets.
$ php -v
PHP 4.3.0 (cli) (built: Dec 27 2002 20:26:15)
Copyright (c) 1997-2002 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2002 Zend Technologies
$ tail ~/Library/Logs/CrashReporter/php.crash.log
**********
Date/Time: 2003-08-11 09:25:46 -0400
OS Version: 10.2.5 (Build 6L29)
Host: 128kb.com
Command: php
PID: 12508
Exception: EXC_BAD_ACCESS (0x0001)
Codes: KERN_PROTECTION_FAILURE (0x0002) at 0x00000000
Thread 0 Crashed:
#0 0x0018aeb0 in shutdown_memory_manager
#1 0x0015e354 in php_request_shutdown
#2 0x001c25c0 in main
#3 0x00001d24 in _start
#4 0x00001b54 in start
PPC Thread State:
srr0: 0x0018aeb0 srr1: 0x0200f030 vrsave: 0x00000000
xer: 0x00000000 lr: 0x0018aee0 ctr: 0x90003da0 mq: 0x00000000
r0: 0x008a931b r1: 0xbfffdf50 r2: 0x00000000 r3: 0x005bf010
r4: 0x008b43a0 r5: 0x0000000c r6: 0x002c6100 r7: 0x00000000
r8: 0x005bf010 r9: 0x00000000 r10: 0x00000002 r11: 0x008b43a0
r12: 0x90003da0 r13: 0x00000000 r14: 0x00000000 r15: 0x00000000
r16: 0x00000000 r17: 0x00000000 r18: 0x00000000 r19: 0x00000000
r20: 0x00000000 r21: 0x00000000 r22: 0x00000000 r23: 0x00000000
r24: 0x00000000 r25: 0x00000000 r26: 0xbffff968 r27: 0x00000010
r28: 0x00000003 r29: 0xbffff97c r30: 0xbfffdf50 r31: 0x0018ade8
--
Justin Hannus
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php