- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我尝试使用 TensorFlowSharp 构建一个小的 tensorflow 应用程序,有时我会收到此异常:
Managed Debugging Assistant 'CallbackOnCollectedDelegate'
对于函数TensorFlowSharp!TensorFlow.TFBuffer+BufferReleaseFunc::Invoke
我试图找出它的意思,但我没有完全理解其中的解释。这是抛出异常的代码部分:
var graph = new TFGraph();
var model = File.ReadAllBytes(ModelsFile);
graph.Import(model, "");
有人知道我应该怎么做才能防止出现这种异常吗?
布鲁诺
最佳答案
我认为这是 TensorflowSharp 中的错误。
该错误看起来像是 CLR 代码中通常不一致的访问冲突(通常只在重负载或随机尝试次数下发生)。引用自微软docs :
The
callbackOnCollectedDelegate
managed debugging assistant (MDA) is activated if a delegate is marshaled from managed to unmanaged code as a function pointer and a callback is placed on that function pointer after the delegate has been garbage collected.
当从中创建函数指针并暴露给非托管代码的委托(delegate)被垃圾回收时,就会发生这种类型的错误。当非托管组件尝试调用函数指针时,它会生成访问冲突。失败似乎是随机的,因为它取决于垃圾收集发生的时间。
解决方案可能很困难,因为一旦委托(delegate)作为非托管函数指针被编码出来,垃圾收集器就无法跟踪其生命周期。相反,需要在非托管函数指针的生命周期内保留对委托(delegate)的引用。为此,必须在 TensorFlowShapr 的代码(或您的代码)中识别收集到的错误委托(delegate)。
You can also enable the gcUnmanagedToManaged MDA to force a garbage collection before every callback into the runtime. This will remove the uncertainty introduced by the garbage collection by ensuring that a garbage collection always occurs before the callback. Once you know what delegate was collected, change your code to keep a reference to that delegate on the managed side for the lifetime of the marshaled unmanaged function pointer.
所以,我想最好将此报告给图书馆的制造商。
关于c# - 创建 tensorflow 图时出现异常 CallbackOnCollectedDelegate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46131711/
我正在尝试诊断我们目前无法在调试环境中重现的客户端崩溃。 我正在尝试确定如果未附加调试器,CallbackOnCollectedDelegate MDA 通知(由第三方代码产生)是否会导致崩溃。 因此
在我的代码运行 5-10 分钟后,我不断收到此错误 CallbackOnCollectedDelegate was detected Message: A callback was made on a
我正在对一个应用程序进行子类化。我的子类 Window 过程在一个 DLL 中。我在 DLL 中的子类化代码看起来有点像这样(精简,删除了其他不相关的部分)。 class FooBar { pri
我正在使用此代码 GlobalKeyboardHook.cs钩住键盘。 我已经按照 this post 中的说明更改了所有指定内容.现在我的代码如下所示: using System; using Sy
我尝试使用 TensorFlowSharp 构建一个小的 tensorflow 应用程序,有时我会收到此异常: Managed Debugging Assistant 'CallbackOnColle
我正在使用全局键盘 Hook 类。此类允许检查是否在任何地方按下了键盘键。一段时间后我遇到了一个错误: **CallbackOnCollectedDelegate was detect
我正在尝试为 Walther Mfs100 Check 扫描仪编写接口(interface),但扫描后出现“检测到 CallbackOnCollectedDelegate”错误。我怎样才能解决这个问题
我制作了一个非常小的应用程序,可以使用 SlimDX 捕获游戏内的屏幕。(我按下左键点击捕捉) 捕获有效(至少当我点击表单本身时)但是当我点击 firefox 或任何其他应用程序时,我得到这个异常:
我是一名优秀的程序员,十分优秀!