tcl: 栈外 space (无限循环?)
tcl: out of stack space (infinite loop?)
我正在使用 R.net 并尝试调用用 R 编写的函数。
这是我在 visual studio
中的代码
var myfnc = _engine.Evaluate("source('.....CalculateCost.R')").AsCharacter();
var _uid = _engine.CreateCharacter(uid);
var arr = _engine.CreateIntegerVector(ids.Length);
var _batchGuid = _engine.CreateCharacter(batchId);
var ss = _engine.Evaluate(myfnc[0]).AsFunction();
ss.Invoke(new SymbolicExpression[] { arr, _uid, _batchGuid });
//_engine has been initialized in the constructor
以上代码将生成一个绘图并保存在一个文件夹中。就是这样。
问题:它在大多数情况下都运行良好。但有时它会抛出以下错误。
Error in structure(.External(.C_dotTclObjv, objv), class = "tclObj") :
[tcl] out of stack space (infinite loop?).
at RDotNet.Function.evaluateCall(IntPtr call)
at RDotNet.Function.createCallAndEvaluate(IntPtr argument)
at RDotNet.Function.InvokeOrderedArguments(SymbolicExpression[] args)
at RDotNet.Closure.Invoke(SymbolicExpression[] args)
at SmartPoolApp.Helpers.RStuffGenerator.ExecuteCostCalculation(Int32[] ids, String uid, String batchId) in k:\Repositories\myprogram\Helpers\RStuffGenerator.cs:line 157
在line:57中,我有这个代码:
ss.Invoke(new SymbolicExpression[] { arr, _uid, _batchGuid });
我只是不知道如何解决它,甚至不知道它是什么意思!!
任何帮助将不胜感激。
编辑:
我是 运行 这个来自 asp.net mvc 网络应用程序。它第一次工作,当我刷新几次时,它就坏了。
R.NET 可能是一个影响因素,但这可能不是问题的核心,如果有的话。
我注意到两件事:
- 大部分时间都有效,但有时无效
- 与堆栈有关 space(在使用 R 的上下文中)
第一点暗示了多线程问题的可能性,众所周知,不可重现并且显然是随机的。第二个也是,但这并不明显,是 R 的一个怪癖。
您是否有理由认为您的代码中某处是多线程的?这是你自己可能不会明确做的事情。例如,您是 运行 命令行、windows 表单、Web 应用程序吗?
这个 post on R-devel 提供了一些关于 R CStackLimit 和多线程相互作用的信息。
Whosebug 上的这个 post Tkinter and thread. out of stack space (infinite loop?) 涉及一些 tcl/tk 内容的经验和多个线程访问它时的错误。
我正在使用 R.net 并尝试调用用 R 编写的函数。
这是我在 visual studio
中的代码var myfnc = _engine.Evaluate("source('.....CalculateCost.R')").AsCharacter();
var _uid = _engine.CreateCharacter(uid);
var arr = _engine.CreateIntegerVector(ids.Length);
var _batchGuid = _engine.CreateCharacter(batchId);
var ss = _engine.Evaluate(myfnc[0]).AsFunction();
ss.Invoke(new SymbolicExpression[] { arr, _uid, _batchGuid });
//_engine has been initialized in the constructor
以上代码将生成一个绘图并保存在一个文件夹中。就是这样。
问题:它在大多数情况下都运行良好。但有时它会抛出以下错误。
Error in structure(.External(.C_dotTclObjv, objv), class = "tclObj") :
[tcl] out of stack space (infinite loop?).
at RDotNet.Function.evaluateCall(IntPtr call)
at RDotNet.Function.createCallAndEvaluate(IntPtr argument)
at RDotNet.Function.InvokeOrderedArguments(SymbolicExpression[] args)
at RDotNet.Closure.Invoke(SymbolicExpression[] args)
at SmartPoolApp.Helpers.RStuffGenerator.ExecuteCostCalculation(Int32[] ids, String uid, String batchId) in k:\Repositories\myprogram\Helpers\RStuffGenerator.cs:line 157
在line:57中,我有这个代码:
ss.Invoke(new SymbolicExpression[] { arr, _uid, _batchGuid });
我只是不知道如何解决它,甚至不知道它是什么意思!! 任何帮助将不胜感激。
编辑:
我是 运行 这个来自 asp.net mvc 网络应用程序。它第一次工作,当我刷新几次时,它就坏了。
R.NET 可能是一个影响因素,但这可能不是问题的核心,如果有的话。
我注意到两件事:
- 大部分时间都有效,但有时无效
- 与堆栈有关 space(在使用 R 的上下文中)
第一点暗示了多线程问题的可能性,众所周知,不可重现并且显然是随机的。第二个也是,但这并不明显,是 R 的一个怪癖。
您是否有理由认为您的代码中某处是多线程的?这是你自己可能不会明确做的事情。例如,您是 运行 命令行、windows 表单、Web 应用程序吗?
这个 post on R-devel 提供了一些关于 R CStackLimit 和多线程相互作用的信息。
Whosebug 上的这个 post Tkinter and thread. out of stack space (infinite loop?) 涉及一些 tcl/tk 内容的经验和多个线程访问它时的错误。