openssl 0.9.7a-0.9.7d的一个多线程bug
2009-08-29 11:40
211 查看
程序在极高的压力下运行很长时间出现,md_rand.c:312: ssleay_rand_add: Assertion `md_c[1] == md_count[1]' failed。
原因是编译openssl的CFLAGS没有设置为thread safe,多线程同时调用libcrypto的RAND_add()函数会出断言错误。SSL_connect()和SSL_accept()都会调用RAND_add()。
#if !defined(OPENSSL_THREADS) && !defined(OPENSSL_SYS_WIN32)
assert(md_c[1] == md_count[1]);
#endif
编译时 -DOPENSSL_THREADS -pthread -D_REENTRANT -D_THREAD_SAFE -D_THREADSAFE
原因是编译openssl的CFLAGS没有设置为thread safe,多线程同时调用libcrypto的RAND_add()函数会出断言错误。SSL_connect()和SSL_accept()都会调用RAND_add()。
#if !defined(OPENSSL_THREADS) && !defined(OPENSSL_SYS_WIN32)
assert(md_c[1] == md_count[1]);
#endif
编译时 -DOPENSSL_THREADS -pthread -D_REENTRANT -D_THREAD_SAFE -D_THREADSAFE
相关文章推荐
- 实习点滴 - 跟一个蠢bug学习多线程调试、线程安全和可重入函数
- openssl中的一个bug--附带asn1的点点滴滴
- 多线程环境下libcurl的一个Bug
- luaintf的多线程一个隐藏bug,库中的变量没有加锁
- 一个低概率bug的定位过程---多线程操作文件时一定要注意
- 【笔记】多线程操作Oracle数据库的一个BUG
- openssl中的一个bug--附带asn1的点点滴滴
- 并发多线程环境下触发spring3的getBean的一个bug, bean的scope为prototype
- NDK中使用pthread多线程中自己写的一个BUG
- 记多线程操作一个BUG
- mysql 多线程写入后查询丢失数据的一个bug
- posix多线程程序使用条件变量的一个常见bug
- 改bug后 fix bug 时,一个不错的修复描述模板
- 发现并认为这是jQuery1.4.4的一个Bug
- js动画---一个小bug的处理
- 5.6 explain update一个疑似bug
- PHP is_subclass_of函数的一个BUG和解决方法
- 记录发现的一个hiredis的bug
- LVS负载均衡软件在处理Netfilter/iptables连接状态跟踪机制时遇到的一个bug的说明
- C++标准库的一个有趣的小bug