I was working on my recent problem by sprinkling print statements thruoghout the code for my module. It appears that the problem is in the destructor.
Guess what the destructor does? It closes my CGI::Session object... the one I was having problems with a bit back.
I was using the "Storable" serializer. When I changed it to "FreezeThaw" or used the default... the sigfault stopped.
I'd still like to know why wrapping the code in a sub made a difference...