On 13/09/2012 19:48, Tom Lane wrote:
> Marko Tiikkaja <pgmail@joh.to> writes:
>> On 9/12/12 1:50 AM, Tom Lane wrote:
> Hm, I wonder if it's Ubuntu-specific? What Perl version is that exactly?
We've reproduced it on both 5.14.2 and 5.16.1.
>> What happens is that free_plperl_function() for some reason gets called
>> with the prodesc of func0003. Later on, func0003 wants to get rid of
>> his prodesc and I get a crash. What's weird about this is that
>> current_call_data->prodesc actually points to the correct prodesc (the
>> one of func0005), but still somehow something different is passed to
>> free_plperl_function().
>
> The only theory that comes to mind is that current_call_data is somehow
> getting aliased (free'd and realloc'd). I don't see how that could
> happen, but it occurs to me that it's kinda dumb to be palloc'ing it
> in the first place. Its lifetime is exactly that of the call, so it
> would be simpler and more foolproof to make it a local variable.
>
> I've pushed a HEAD patch to do that, and I wonder if you could check
> whether it changes anything.
Will look at that tomorrow, thanks.
Regards,
Marko Tiikkaja