Re: Need help with bug fix for storing shared objects in shared structures
[email protected] (Dean Arnold) Thu, 01 Nov 2007 17:19:58 -0700
| Newsgroups | perl.perl5.porters,perl.ithreads |
|---|---|
| Message-ID | <[email protected]> |
Jerry D. Hedden wrote: > I'm trying to come up with a fix for the bug related to > storing shared objects inside of shared structures. The bug > is that when any proxy objects for the shared object are > destroyed, the object's DESTROY routine is called even > thought the object itself should not yet be destroyed. > > My problem is that my code (provided below) seg faults, and > I can't figure out why. Any help, comments, suggestions, > etc. would be appreciated. <snip/> > > > I am attempting to fix this bug by first providing a call in > threads::shared (ext/threads/shared/shared.xs) to report on > whether or not a shared object should be destroyed: If the > ref is shared, and its refcnt is greater than one, then it > should NOT be destroyed. <snip/> I can't answer the cause of your segfault (perhaps you can supply a stack trace ?), but since you're hacking CORE anyway, might I suggest a different solution that would hopefully be much faster to execute (albeit more of a pita to implement): creating a function pointer ala PL_lockhook ? Unfortunately it appears defining and init'ing lockhook is scattered around various header/source files, and you'll need to create a new funcptr type to take an SV argument and return an int. But presumably it would run much faster (and be easily hooked/chained by other modules that may need the feature, e.g., Thread::Sociable 8^>) My $0.02, Dean Arnold Presicient Corp.