On Thu, Jan 20, 2000 at 01:31:15PM +0100, [EMAIL PROTECTED] wrote:
> thank you for the quickly provided patch. The script runs really better,
> terminates and finally reports:
>
> [DBG] All watchers were cancelled:
> 1-27947-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0
Oh good.
> So, after a call of cancel(), I would expect a decreased IO watcher number. But
> it remains the same - until the next check. Then it IS decreased ... is this an
> intended delay?
Event is at the mercy of perl's reference counting mechanism. Event
must delay deallocation of a cancelled watcher until perl releases all
references to it.
> If so, this may also be the explanation for these reports in the final cleanup
> loop:
> [...snip...]
>
> Here, the reported number of IO watchers remains the same for the entire
> cancel() loop. Then, finally, in a subsequent check, it was decreased to 0.
Yah.
> Finally, the event counters in slots 0 and 1 are never decreased. Checking the
> c installation subdirectory, I found that there are EvNew() calls for slots 0
> to 11, while EvFree() calls are only implemented for slots 2 to 11. Intended?
Yes. Events & ioevents are never deallocated. If you think this is a
problem then I can provide a function to deallocate everything on the
freelist. However, I doubt that this is worthwhile.
> Nevertheless, the patched module is now installed and the server already runs
> on its base. Hopefully it no longer grows ...
Fantastic! I'll upload a new release of Event to CPAN soon...
--
"Never ascribe to malice that which can be explained by stupidity."
via, but not speaking for Deutsche Bank