checking for sincos function... yes
checking for __sincos... no
dmesg(调试打开并且 CONFIG_DYNAMIC_DEBUGGING=y)
Jun 28 00:46:40 rm-one kernel: [12329.424327] 0xffffffffc0b8f000 .note.gnu.build-id
Jun 28 00:46:40 rm-one kernel: [12329.424328] 0xffffffffc0b8f024 .note.Linux
Jun 28 00:46:40 rm-one kernel: [12329.424342] 0xffffffffc0b74000 .text
Jun 28 00:46:40 rm-one kernel: [12329.424343] 0xffffffffc0b8f040 .rodata
Jun 28 00:46:40 rm-one kernel: [12329.424344] 0xffffffffc0b8f0d8 .rodata.cst8
...
Jun 28 00:46:40 rm-one kernel: [12329.424405] motmod does not use rtai_math!
...
Jun 28 00:46:45 rm-one kernel: [12334.686628] RTAPI: Task 1[ffffa42014c86000]: Fault with vec=8, signo=11 ip=ffffffffc0b8e434.
Jun 28 00:46:45 rm-one kernel: [12334.686628] RTAPI: This fault may not be recoverable without rebooting.
如果 configure 找到 sincos 而不是 __sincos (?),则 HAVE_SINCOS 已定义且 HAVE__SINCOS 未定义。
这会在运行 on_abort_command_crazy_move 测试时导致 100% 可重复的内核恐慌。但它需要一个可能只有我拥有的设置。我正在运行带有 RTAI“vulcano”补丁 4.19.114 内核的 Buster,RTAI 配置为使用 MUSL 数学库
但是我认为任何了解配置脚本和 rtapi_math 的人都可以遵循逻辑(即,不是我)
配置输出:
dmesg(调试打开并且 CONFIG_DYNAMIC_DEBUGGING=y)
(随后是整个系统锁定)
addr2line 指向 sincos.c 第 36 行:
而且,事实上,注释掉对 sin 和 cos 的调用意味着系统不会崩溃并且 on_abort_crazy_move 测试通过。
我的理论是这段代码没有得到有效的 sin 和 cos。代码确实可以运行(通过添加带有 sin 和 cos 注释的 printk 来证明)