On Thu, May 31, 2001 at 12:06:15PM -0400, Uri Guttman wrote:
>   DN>            Watchers are stopped implicitly if their new
>   DN>            configuration deprives them of the ability to generate
>   DN>            events.
> 
> events are not callbacks. theoretically you could have an event with an
> implied action and no callback. the bug is as i said, it should not call
> the null callback. cancelling the watcher because of no callback makes
> no sense. you just cancel the watcher.

I have a watcher with a callback of [ $obj, "method" ].  $obj contains
a reference to the watcher, creating a circular reference chain.  I
want $obj to be GCd, so I need to either remove the watcher's reference
to $obj, or vice-versa.

Destroying the watcher is insufficient, as this does not free the
contents of its cb attribute.  I need to explicitly undefine the
callback.

The above quote from the manpage indicates, by my reading, that
removing the callback implicitly stops the watcher.  To support this
reading, I quote from elsewhere in the manpage:

       $watcher->start
           Activate the watcher.  Watchers refuse to start()
           without sufficient configuration information to
           generate events.  Constructors always invoke start()
           unless the parked=1> option is requested.  You will
           need to set the parked option if you preallocate
           unconfigured watchers.

If I create a watcher with no cb attribute and without the parked
option, I receive an exception: "Event: can't start '?? boom:11'
without callback".  I interpret this as occurring because the watcher
does not have sufficient configuration information to generate
events: events must have an associated callback.

The alternative is to say that it is acceptable for an io watcher
to spin, generating a continuous series of callbackless events,
if it is configured without a callback.


> and it is not a perl bug in any case. it is trivial to get perl to core
> dump from an XS module.

I did not say that it is a bug in perl.

I am currently feeling quite frustrated.  I spent some time tracking
down the bug (not a perl bug; a bug in Event) which was causing my
program to core dump.  I found it, and submitted a description and
patch to the appropriate people.  In return, I am being told that
I am the one at fault.

                    - Damien

Reply via email to