round函数数据类型处理BUG

问题:
round()处理整数时会导致nebula-graphd崩溃重载;
截图:





日志:

F20231226 03:54:39.106072 26 Value.cpp:602] Check failed: type_ == Type::FLOAT (INT vs. FLOAT)
*** Check failure stack trace: ***
*** Aborted at 1703562879 (Unix time, try ‘date -d @1703562879’) ***
*** Signal 11 (SIGSEGV) (0x0) received by PID 1 (pthread TID 0x7f218edff700) (linux TID 26) (code: 128), stack trace: ***
/usr/local/nebula/bin/nebula-graphd(_ZN5folly10symbolizer17getStackTraceSafeEPmm+0x31)[0x22c9ad1]
/usr/local/nebula/bin/nebula-graphd(_ZN5folly10symbolizer21SafeStackTracePrinter15printStackTraceEb+0x26)[0x22c0fd6]
/usr/local/nebula/bin/nebula-graphd[0x22bef67]
/lib64/libpthread.so.0(+0xf62f)[0x7f2199e7162f]
/lib64/libc.so.6(abort+0x297)[0x7f2199acbbc7]
/usr/local/nebula/bin/nebula-graphd[0x22f25f9]
/usr/local/nebula/bin/nebula-graphd[0x22f56f3]
/usr/local/nebula/bin/nebula-graphd[0x22f20c8]
/usr/local/nebula/bin/nebula-graphd[0x22f5da8]
/usr/local/nebula/bin/nebula-graphd(_ZNK6nebula5Value8getFloatEv+0x6f)[0x1d6231f]
/usr/local/nebula/bin/nebula-graphd[0x1daa8c4]
/usr/local/nebula/bin/nebula-graphd[0x1daa8fc]
/usr/local/nebula/bin/nebula-graphd(_ZN6nebula22FunctionCallExpression4evalERNS_17ExpressionContextE+0x99)[0x1d950e9]
/usr/local/nebula/bin/nebula-graphd(_ZN6nebula20ArithmeticExpression4evalERNS_17ExpressionContextE+0x1d)[0x1d8efcd]
/usr/local/nebula/bin/nebula-graphd(_ZN6nebula5graph15ProjectExecutor9handleJobEmmPNS0_8IteratorE+0x364)[0x12e0124]
/usr/local/nebula/bin/nebula-graphd(_ZN6nebula5graph15ProjectExecutor7executeEv+0x11c)[0x12e0edc]
/usr/local/nebula/bin/nebula-graphd(_ZNK6nebula5graph28AsyncMsgNotifyBasedScheduler10runExecuteEPNS0_8ExecutorE+0x11d)[0x144a6dd]
/usr/local/nebula/bin/nebula-graphd(_ZNK6nebula5graph28AsyncMsgNotifyBasedScheduler7executeEPNS0_8ExecutorE+0x9f)[0x144ac2f]
/usr/local/nebula/bin/nebula-graphd[0x144b5ee]
/usr/local/nebula/bin/nebula-graphd[0x144b716]
/usr/local/nebula/bin/nebula-graphd[0x222bc8b]
/usr/local/nebula/bin/nebula-graphd(_ZTv0_n32_N6apache6thrift11concurrency14FunctionRunner3runEv+0x96)[0x

建议:
第一、round函数强制使用浮点型我可以理解,但代码实现应当先检查数据类型报错而不是将整个进程打崩;
第二、如果代码编写逻辑风格趋向严格,那么强制要求数据类型则应作用于所有函数,比如sum();sum()函数可以灵活返回数据类型那round()也应遵循灵活宽松的代码风格;

1 个赞

感谢。
你具体使用的是哪个版本?
记得有个版本好像已经修复了。
如果没有的话麻烦帮忙提个issue,感谢

1 个赞


使用最新的v3.6.0版本

round 的修复 pr 还没被 pick 到某个发行版,要在 v3.7 才能发布。等下个月发版本的时候你更新下内核版本呀 cc @MuYi

1 个赞

好的

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。