Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CdllVersion not found #3282

Closed
mattdowle opened this issue Jan 13, 2019 · 0 comments
Closed

CdllVersion not found #3282

mattdowle opened this issue Jan 13, 2019 · 0 comments
Milestone

Comments

@mattdowle
Copy link
Member

mattdowle commented Jan 13, 2019

TL;DR for folks who pasted the error message into Google :

Please close all R sessions to release the old datatable.dll and reinstall data.table in a fresh R session.


From 1.12.2, CdllVersion not found will be caught and you'll see this error instead :

The datatable.dll version (1.11.8 or before) does not match the package (1.12.0). Please close all R sessions to release the old datatable.dll and reinstall data.table in a fresh R session. The root cause is that R's package installer can in some unconfirmed circumstances leave a package in a state that is apparently functional but with new R code calling old C code: https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17478. We think this only happens in the few days after an update on CRAN before Windows binaries are available: "There is a binary version available but the source version is later. Do you want to install from source? y/n:" However there is some debate on this. Please help by adding precise circumstances to 17478 to move the status to confirmed. This mismatch between R and C code can happen with any package not just data.table. It is just that data.table has added this check.


Follow up to #3056 and #3211
The CdllVersion can be caught using is.loaded() something like this :

!is.loaded("CdllVersion", PACKAGE="datatable") || .Call(CdllVersion)

Local testing on Ubuntu shows there has to be no dot in the package name (that argument is really the name of the dll/so which has the dot removed).
With this change implemented in 1.12.2, folk upgrading from pre-1.12.0 to 1.12.2+ and hitting the upgrade mismatch problem in the few days before Windows binary is available on CRAN, would then see the new long helpful message rather than the CdllVersion not found. In other words, nobody would ever see CdllVersion not found (regardless of which version they were upgrading from) as long as they were upgrading to 1.12.2+.
More background here: #3211 (comment)

@mattdowle mattdowle added this to the 1.12.2 milestone Jan 13, 2019
@mattdowle mattdowle changed the title Catch CdllVersion not found CdllVersion not found Jan 13, 2019
@mattdowle mattdowle changed the title CdllVersion not found CdllVersion not found Jan 13, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant