开源改变世界

xhc-whb04b-6 代码散布着 assert() 并且偶尔会因此而失败。请用 NDEBUG 删除 assert() 因为代码在没有 assert() 的情况下做正确的事情 #2237

推推 grbl 2年前 (2023-01-31) 167次浏览

注释

xhc-whb04b-6 代码散布着 assert() 并且偶尔会因此而失败。请用 NDEBUG 删除 assert() 因为代码在没有 assert() 的情况下做正确的事情 #2237

以下是我重现该问题所遵循的步骤:

  1. 以标准方式在 debian 上下载并安装 linuxcnc 作为一个包
  2. 启动 linuxcnc 并使用 xhc-whb04b-6。在一个随机的时间之后,也许是几个小时,它停止响应
  3. 我这里没有错误消息,但我搜索并发现这是触发 xhc-whb04b-6 模块退出的行:
    assert(0 == r); 函数 bool Usb::setupAsyncTransfer()中https://github.com/LinuxCNC/linuxcnc/blob/master/src/hal/user_comps/xhc-whb04b-6/usb.cc
    中的第 460 行

这是我期望发生的事情:

如果它无法设置异步 usb 传输,它应该进行一些重试。

这是发生了什么:

hal 模块停止。无法卸载或以任何方式修复它(afaik)。

在此之前它工作正常:

(如果在对硬件或软件进行特定更改后行为发生了变化
,请描述您认为负责的更改。例如,“
从 LinuxCNC 2.7.3 升级到 2.7.4 后”)
前几天我得到了一个新的 xhc whb04b-4 ,所以我一直对新的吊坠有这个问题。

有关我的硬件和软件的信息:

我正在从 apt 存档运行 2.8。
我还下载了开发人员源代码并搜索文件并重新编译。
问题出在这两个版本中。
解决方法很简单。使用 NDEBUG 指令解除 assert() 函数。
因为完成后,代码会做正确的事情。它会尝试重新连接并重新建立
功能。
我在 setupasynctransfer 中遇到错误,代码处理得很好,并重新建立了功能。
我现在正在运行一个带有 NDEBUG 的版本,是的,它应该是这样的。

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
还没有
项目

还没有

发展

没有分支机构或拉取请求

1名参加者
xhc-whb04b-6 代码散布着 assert() 并且偶尔会因此而失败。请用 NDEBUG 删除 assert() 因为代码在没有 assert() 的情况下做正确的事情 #2237

喜欢 (0)