【问题标题】:tcl: out of stack space (infinite loop?)tcl:堆栈空间不足(无限循环?)
【发布时间】:2016-01-20 09:24:00
【问题描述】:

我正在使用 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

在第 57 行,我有这个代码:

ss.Invoke(new SymbolicExpression[] { arr, _uid, _batchGuid });

我只是不知道如何解决它,它甚至意味着什么! 任何帮助将不胜感激。

编辑:

我从一个 asp.net mvc web 应用程序运行它。它第一次工作,当我刷新几次时,它就坏了。

【问题讨论】:

    标签: .net r r.net


    【解决方案1】:

    R.NET 参与其中的事实可能是一个促成因素,但这可能不是问题的核心,如果有的话。

    我要注意两点:

    • 它大部分时间都有效,但有时无效
    • 与堆栈空间有关(在使用 R 的上下文中)

    第一点暗示了多线程问题的可能性,众所周知,多线程是不可重现的,而且显然是随机的。第二个也是,但这并不明显,是 R 的一个怪癖。

    您有理由认为您的代码中的某处某处是多线程的吗?这是您自己可能不会明确执行的操作。例如,您是从命令行、Windows 窗体、Web 应用程序运行它吗?

    post on R-devel 提供了一些关于 R CStackLimit 和多线程相互作用的信息。

    stackoverflow 上的这篇帖子 Tkinter and thread. out of stack space (infinite loop?) 涉及一些 tcl/tk 内容的经验以及如果多个线程访问它时的错误。

    【讨论】:

    • 感谢您的来信。我在问题中添加了几行。我已经浏览了你的链接,但我不知道该怎么做或改变什么。
    • 嗨。你写的这一行“你有理由认为你的代码中的某个地方是多线程的吗?”..我已经调查并发现当我尝试从多个浏览器访问 R 计算部分并点击刷新太多次,它打破了。所以我所做的是,在我的 .net 代码中添加了一些线程 /Semaphore,看起来错误不会再次出现在相同类型的测试中。
    猜你喜欢
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多