It's not one of my direct dependencies and I don't believe that it is a
transitive dependency either because it isn't installed on my test server.

On Thu, Sep 17, 2015 at 1:26 PM, Michael Schout <msch...@gkg.net> wrote:

> On 9/17/15 9:00 AM, John Dunlap wrote:
> > I'm not using the TryCatch module in my application. I use eval blocks
> > for all of my transaction management. For me to be suffering from the
> > same ailment, the bug would have to manifest itself in other ways.
>
> I don't think TryCatch *itself* is the problem.  I was seeing
> segmentation faults from other sections of code that did not use
> TryCatch that the op.c change apparently also causes.
>
> There is some other underlying problem that is causing this.  You can
> put other chunks of code inside the try { } block and the panic does not
> happen.  For some reason $cgi->param() inside the try *does* trigger it,
> but it also needs to be called from a subroutine (e.g.: moving the try
> block inside the handler() sub does not cause the panic.  This all sort
> of makes sense based on what the change to op.c does to the optree that
> causes the bug (skips over "return" ops that do nothing basically)
>
> In addition I had other segfaults that DO NOT issue the "panic" warning.
>  But reversing the optimization to op.c in perl fixes that for me also.
>
> I haven't had time to really try to get into the modperl code enough to
> know what is going on, but the backtrace from panic is coming from
> copying scalars that have flags or something to that effect when leaving
> a subroutine. I'm pretty sure modperl messes with scalar flags and/or
> scalar magic due to previous experience with the mod_perl codebase a
> long time ago so that might explain why this ONLY happens under modperl
> and not under vanilla perl.
>
> Also, TryCatch is implemented using Devel::Declare, which is admittedly
> sneaky because it screws with the perl optree during compilation.  The
> part that was changed in op.c that causes the problems this thread is
> about essentially "skip over" a couple of unnecessary ops as an
> optimization.
>
> So this is a bit long winded, but I kind of doubt TryCatch is the
> problem.  TryCatch+CGI->param called from a soubroutine just happens to
> be one of the shortest, sure fire ways to trigger the panic that I have
> found when I needed to make a test case to demonstrate the bug.
>
> I suspect Devel::Declare was getting away with something that it
> shouldn't be able to do, or, something in modperl at this time.
>
> Is Devel::Declare a dependency anywhere in your codebase?  E.g.: if you
> have Devel/Declare.pm in your perl library path, will you code still run
> if you remove Devel/Declare.pm?  If so then that either means the
> problem is probably in modperl itself, or, you are seeing something
> completely different.
>
> Regards,
> Michael Schout
>



-- 
John Dunlap
*CTO | Lariat *

*Direct:*
*j...@lariat.co <j...@lariat.co>*

*Customer Service:*
877.268.6667
supp...@lariat.co

Reply via email to