On Nov 21, 2007 7:25 PM, Mladen Turk <[EMAIL PROTECTED]> wrote:
> Trustin Lee wrote:
> >>
> >>> You might encounter segfault due to a bug of the current
> >>> implementation because we are using tomcat-native bridge for APR 1.2.
> >>> Any feed back is welcome!
> >>>
> >> The problem is probably with shutting down the APR library.
> >> Tomcat-native is very thin JNI layer for APR, so some
> >> precautions must be taken, like implementing shutdown hooks.
> >
> > Yes, I found segfault happens when I try to close socket more than once. :)
> >
>
> Right. All native 'objects' are long (actually pointers to the native memory),
> and the only check that is done is test for zero (NULL).
> It's the same as if you would call free() twice. The second call will probably
> core dump cause it references already deallocated memory.
> So, although harder to program correctly, it offers zero GC, cause no
> Java objects gets created. The same thing is done within core Java (rt.jar)
> where actual class implementation takes care of underlaying JNI safety.
> I was thinking to add the higher API over this thin layer that would
> allow Java programmers to use it more comfortably, but then extra Java
> objects would be created, and memory usage as well as GC would rise.
> So, when using tomcat-native, think as a C not as Java programmer ;)

Yes, playing with APR reminded me of the old days. :D

> Next, the major problem is in threaded environment where you can call
> global Pool destroy (shutting down the Library) while there is still native
> call in progress.
>
> First thing I would add would be the unlock for Socket.accept
> (something each Acceptor, not only APR should have)
> and make sure that Socket.close for the acceptor socket is called even
> on the CTRL+C. After all native calls are exited, then you can safely
> call the Library.shutdown

Doesn't OS release any resources allocated by a process when the
process quits or dies?  Do I really need to call Library.shutdown()?
Am I missing something?

Thanks again for the feed back,
Trustin
-- 
what we call human nature is actually human habit
--
http://gleamynode.net/
--
PGP Key ID: 0x0255ECA6

Reply via email to