From murdoch.duncan at gmail.com  Fri May 13 23:34:37 2011
From: murdoch.duncan at gmail.com (Duncan Murdoch)
Date: Fri, 13 May 2011 17:34:37 -0400
Subject: [Rd] Reproducible use case for R crash after updating R
In-Reply-To: <BANLkTim0BpLDYtU=FebEriF7Q_AMmToGbA@mail.gmail.com>
References: <BANLkTi=zA1s+DwgN+0qhf7_4CkZ-VBPY9A@mail.gmail.com>
	<BANLkTim0BpLDYtU=FebEriF7Q_AMmToGbA@mail.gmail.com>
Message-ID: <4DCDA3ED.4050607@gmail.com>

A simple version of a fix is now in R-devel:  if the .RData file can't 
be loaded during startup, an error message is printed, and R starts with 
an empty workspace.

The name of the .RData file is printed.  It's usually just ".RData", 
because that's what R tries to load; the file will be in the current 
directory if you want to delete it.  If it contains objects that you 
want to recover, you can try to deal with the error message (e.g. by 
installing fortunes in your example), exiting without saving, and then 
the next restart may succeed.

Duncan Murdoch


On 11-05-12 2:26 PM, Henrik Bengtsson wrote:
> On Thu, May 12, 2011 at 10:55 AM, Henrik Bengtsson<hb at biostat.ucsf.edu>  wrote:
>> This might have been discussed before, but below is a
>> "not-so-unlikely" use case where the user follows normal procedures,
>> updates R to a major release version, and then R crashes:
>>
>> 1. Use runs R stable (e.g. v2.13.0).
>> 2. User installs a package with a namespace, e.g. install.packages("fortunes").
>> 3. User uses the package and one of the package's objects are assigned
>> to the global env, e.g. foo<- fortune.
>> 4. The user quits R and stores the session data, e.g. q("yes").  The
>> session is stored in users home directory.
>> 5. User update to new major release of R (e.g. 2.14.0).
>> 6. User starts R.  R crashes with "Fatal error: unable to restore
>> saved object in .RData" because 'fortunes' is not installed for this
>> new version of R.  There is also an error message before that
>> reporting "Error in loadNamespace(name) : there is no package called
>> 'fortunes'".
>>
>> This can also be reproduced using a single R version as follows:
>>
>> 1. Start R and do:
>> install.packages("fortunes")
>> library("fortunes")
>> foo<- fortune
>> remove.packages("fortunes")
>> q("yes")
>> 2. Restart R.  R crashes.
>>
>> For a GUI-only user this is complicated, because although the users
>> sees the informative error message that "Error in loadNamespace(name)
>> : there is no package called 'fortunes'", s/he cannot get to the point
>> where it is possible to install that missing package.  The key for the
>> user is to understand to remove the .RData.  In order to do this, s/he
>> has to locate that file first.
>>
>> To simplify this, a few alternatives exists:
>>
>> 1. R reports the full path to the problematic .RData file.
>> 2. R renames the problematic .RData file to
>> erroneous_20110512-123404UTC.RData and reports the new full pathname.
>>
>> In both cases there could be the option for R to either exit, or
>> ignore the problematic .RData file and give the user access to the
>> prompt.  One could also imaging a fancy recovery feature where R
>> detects "erroneous" .RData files and asks the user if s/he wish to try
>> to load them (maybe the packages has been installed since).
>
> On Windows, the easiest way to give a GUI-only user access to the R
> prompt is to also install an "R (vanilla mode)" shortcut/icon on the
> Startup menu and Desktop (with target "...\Rgui.exe" --vanilla) in
> addition to the default one.
>
> /Henrik
>
>>
>> I'm sure there are complications to implement the above, because
>> .RData is loaded during startup, but that's my $.02 to this problem
>>
>> /Henrik
>>
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] Reproducible use case for R crash after updating R
Duncan Murdoch