在路由器刷了 OpenWRT系统后,可以运行某python应用,但经常会出现错误提示
<code>……python: md_rand.c: 322: ssleay_rand_add: Assertion `md_c[1] == md_count[1]' failed </code>
然后程序终止运行。
根据hongrui的日志
中的说明,原因是
编译openssl的CFLAGS没有设置为thread safe,多线程同时调用libcrypto的RAND_add()函数会出断言错误。SSL_connect()和SSL_accept()都会调用RAND_add()。
需要使用线程安全重新编译libssl
,编译时
<code>-DOPENSSL_THREADS -pthread -D_REENTRANT -D_THREAD_SAFE -D_THREADSAFE </code>
arcpp.zju把编译好的二进制文件(target-mips_r2_uClibc-0.9.33.2-libopenssh-threaded.tar)打包了,下载后放在 libssl.so
所在的目录,备份原libssl.so
,libcrypto.so
文件,使用新的libssl.so
,libcrypto.so
文件即可