Comments (3)
It's likely some kind of subtle bug in R.NET. We don't do any unmanaged memory management in RProvider. Presumably you are using it in some way that looks the same but actually is subtly different. I fixed some bugs in SymbolicExpression resource management before, but I am sure some remain. It's very difficult to do the interop with unmanaged code correctly.
When I get a chance, I'll try to take a look. Having a robust repro helps!
from rprovider.
I raised an issue in RDotNet project (https://rdotnet.codeplex.com/workitem/67) and they redirect me to Issue #4. Here I provide a minimal reproducible example where RProvider causes an error while RDotNet does not.
Using RDotNet:
open RDotNet
open RDotNet.NativeLibrary
open RDotNet.Internals
let REngine = REngine.CreateInstance("R_INSTANCE", @"C:\Program Files\R\R-3.0.2\bin\x64\R.dll")
let R (statement:string) = REngine.Evaluate statement
REngine.Initialize()
[<EntryPoint>]
let main argv =
let beta =
[ for i in 1..1000 do
let x = R "x <- rnorm(1000)"
let y = R "y <- rnorm(1000)"
let m = R "m <- lm(y~x)"
let beta = (R "m$coefficients[2]").AsNumeric().[0]
printfn "%f" beta
yield beta ]
let meanBeta = beta |> List.average
0 // return an integer exit code
This code runs without any error.
RProvider:
open RDotNet
open RProvider
open RProvider.``base``
open RProvider.stats
[<EntryPoint>]
let main argv =
let beta =
[
for i in 1..1000 do
let x = R.rnorm(1000)
let y = R.rnorm(1000)
let df = R.data_frame(namedParams [ "y", box y; "x", box x; ])
let m = R.lm(df)
let beta = m.AsList().["coefficients"].AsNumeric().[1]
printfn "%f" beta
yield beta
]
let meanBeta = beta |> List.average
0
Every time I run the code above, at some i an error occurs at let df = R.data_frame
or let m = R.lm(df)
:
An unhandled exception of type 'System.AccessViolationException' occurred in RDotNet.dll
Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
How do we debug the code and see what happens?
from rprovider.
This will be fixed once we update to new version of R.NET & merge @dcharbon changes, so I'm closing this.
from rprovider.
Related Issues (20)
- Implement recommended community standards HOT 1
- Revise documentation for .net 5 release HOT 3
- Release a R v3.5+ legacy version for .net framework use HOT 1
- Remove requirement for R_HOME environment variable to be set
- Graphics are unresponsive on Windows and macOS HOT 2
- [Windows only] RProvider doesn't work with R > 4.0.2 HOT 7
- Replace "." with "_" in library names for consistency. HOT 1
- The RPovider is now at https://fslab.org/RProvider/ HOT 5
- Plugins not working with 2.0 beta
- Server fails to start on Apple Silicon
- Project build when referencing RProvider hangs forever (ubuntu-latest - github actions) HOT 2
- FSI printing for R SymbolicExpressions missing since change to #r nuget HOT 5
- 'Permission Denied' in some Github Actions CI scripts but not others
- Check code formatting with fantomas
- Docs build problems on windows github action HOT 1
- No Docs for how to extract values from test summaries HOT 3
- Running an fsx script from "Reading and writing RData files" with fsi throws a `System.Reflection.TargetInvocationException` exception. HOT 3
- Add support for running on aarch64 architecture HOT 9
- Be aware of installation problems in the documentation and with R path HOT 2
- Cannot use the lsr package HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rprovider.