cv::imdecode 在将string类型图像解码的时候,会出现segmentation fault。程序直接崩溃,让人崩溃的是,catch 不到任何错误。
通过各种方法定位到是各种格式奇葩的4通道图片导致,比如某些编辑器输出的png图片。
在持续怼了3天之后,发现是协程导致的问题。关掉协程,哪怕用多进程跑,只会抛出以下warning,程序继续运行。
libpng error: bad adaptive filter value
libpng error: IDAT: CRC error
libpng error: PNG input buffer is incomplete
libpng warning: iCCP: cHRM chunk does not match sRGB
libpng warning: iCCP: extra compressed data
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: IDAT: incorrect data check
libpng warning: sBIT: invalid
疑惑的是,哪怕协程开到1,也会出现segmentaion fault。怀疑是opencv的imdecode函数和协程不对付。