我正在尋求支持將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專家?