杂谈 - TBY's Blog

Cairo的多线程支持依旧不给力

用Haskell写了个小程序,整合了2种miRNA靶基因预测算法,并设计了图形化展示 方案,但发现性能瓶颈在Cairo绘制上,于是尝试并发写pdf,结果是令人沮丧的:

 

testIO: cairo-hash.c:506: _cairo_hash_table_lookup_exact_key: Assertion `!"reached"' failed.
已放弃(吐核)
 
尝试了替换forkIO为forkOS,bug依旧。Haskell程序难以获得完整的栈追踪信息,不过好在这是个assertion failure,有详细的提示,查阅了源文件以后,发现cairo使用了一个静态数据结构来计数。。。囧。。。要知道cairo 1.12.10的release note上可是提到了大幅改进多线程友好度的噢。

 

其他互联网上与该bug相关的帖子:

1. 2010年的:http://lists.cairographics.org/archives/cairo/2010-December/021321.html

2. 2013年的:http://comments.gmane.org/gmane.comp.lib.cairo/23497

 

你相信一个使用了静态数据结构的库是线程安全的么???不管你信不信,我反正信了!!

Windows文件名的奇葩问题

今天接一个分析任务,两个样本,一个叫“I/R”,一个叫“Con”。

第一个样本名在win下是个非法文件名。这个很好解释,win一开始犯贱去弄个'\'字符做路径分隔符,而后又舔着脸去支持'/'做路径分隔符,OK,第一个是非法路径,我可以接受。

奇葩的是后面第二个,怎么看都不像是非法的啊,好了流水线总报错,错误提示还很奇葩:不能重命名已有文件。各位不信可以自己试试看去创建或者重命名任何一个以“Con”三个字母做前缀的文件看看,比如Con.jpg,Con.txt,Con.csv。




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee