奇怪的问题发生在 ARM32 平台上。我需要运行一个时间序列数据库来在边缘设备上存储和处理我的传感器数据。我没有太多选择,因为一些流行的数据库无法在存储容量非常小的设备上运行。经过几个周期的评估,我发现一个开源的时间序列数据库 TDengie 似乎完全符合我的要求,因为它功能强大且足够小。但是当我在我的 ARM32 板上编译和运行它时,它会挂起整个系统。我已经在我的 X86 Linux 机器甚至 Raspberry Pi 4 上尝试过它,但它没有这样的问题。我怀疑这是仅存在于 ARM32 上的特殊错误。我花了一些时间调试。我发现它在src\query\src\qExecutor.c
.
*(double *)pCtx->pOutput = *(double *)pCtx->pOutput + pInput->dsum;
它在 X86 和 Raspberry Pi 上运行良好,但在 ARM32 上总是失败。我对生成的 ARM 平台特定指令 C 程序没有足够的了解。
是否有人可以帮助解决这个问题?