我正在寻求支持将SVG图像渲染为位图,我正在使用librsvg。到目前为止,它运作良好,并使用开罗,万岁!不过,我遇到了一个问题:由于libxml2导致librsvg崩溃?
我们有一个类似于Windows资源管理器的控件,例如,它会在目录中创建缩略图大小的文件图像,因此该产品将被扩展以生成SVG缩略图。
它使用后台线程来生成缩略图图像,以便在UI工作时UI不会被冻结。代码已经投入生产了很长时间,所以就并发问题而言没有任何问题。但是,似乎当rsvg_handle_new()从主线程以外的线程调用发生访问冲突时,当它不是我没有问题使用librsvg。
查看堆栈跟踪崩溃似乎在xmlSetGlobalState()的libxml2(这是librsvg的依赖项)中出现,问题似乎与此处报告的libxml2 crash on second use on Windows似乎没有解决方法相同。如果可以的话,我会将库的使用限制在主线程中,但是我坚持使用这种现有的架构来生成主线程中的缩略图。
我发现http://www.xmlsoft.org/threads.html这意味着在主线程中首先调用xmlInitParser(),这似乎是在RsvgHandle创建期间由librsvg调用的(我认为)。
所以我不确定它是真的libxml2问题,librsvg使用libxml2的方式的问题,或者我尝试使用librsvg的方式的问题?
任何libxml2或librsvg专家?