[Rd] cannot build R-devel (>= r49747)

Duncan Murdoch murdoch at stats.uwo.ca
Tue Sep 22 18:17:57 CEST 2009


I believe this is fixed now (as of r49786).  The problem is that the 
parse code does bad things with the protection stack -- rather than 
pairing PROTECT with UNPROTECT, it does bulk unprotects by saving and 
restoring the stack pointer -- and in the new code the 
ParseState.SrcFile ended up getting released more than once.

Duncan Murdoch

On 9/22/2009 5:50 AM, Romain Francois wrote:
> On 09/22/2009 11:41 AM, Duncan Murdoch wrote:
>>
>> On 22/09/2009 5:30 AM, Romain Francois wrote:
>>> On 09/22/2009 11:25 AM, Peter Dalgaard wrote:
>>>> Romain Francois wrote:
>>>>
>>>>> However, this might be relevant about my setting, I have the
>>>>> "R_KEEP_PKG_SOURCE" environment variable set to "yes". And if I set it
>>>>> to "no" it builds correctly.
>>>> AHA! Yes, that makes sense
>>>>
>>>> R_KEEP_PKG_SOURCE=yes make
>>>>
>>>> breaks for me too with the unprotect_ptr message (SUSE 64bit this time).
>>>>
>>>
>>> I can now track this down to these lines in gram.(y|c)
>>>
>>> if (!isNull(ParseState.SrcFile))
>>> UNPROTECT_PTR(ParseState.SrcFile);
>>>
>>> The error occurs the first time ParseState.SrcFile is not null.
>>
>> Thanks for this info. I can track it down now.
>>
>> Duncan Murdoch
> 
> Good. You'll probably be able to fix it much faster.
> 
> My only guess is that some extra care is needed when UNPROTECT_PTR'ing 
> environments, because if I comment this, then the same problem occurs in 
> R_FinalizeSrcRefState(SrcRefState *state) at the end of the parse.
> 
> Romain
>



More information about the R-devel mailing list