2021-07-04

tcl-rocksdb TLS error issue

我發現 tcl-rocksdb 在載入時會出現 TLS error: cannot allocate memory in static TLS block 的問題,經過搜尋與研究,是因為 RocksDB 使用了 jemalloc,而 jemalloc 在 5.0 之後就會有這個問題

解決的方法有幾個,一個是連結 jemalloc 時使用 static library 而非動態連結;一個是編譯 jemalloc 時加入選項 --disable-initial-exec-tls 來解決 TLS error issue,但是這樣使用者就要自己編譯 jemalloc。

另外的解決方法就是暫時在 RocksDB 關掉 jemalloc,沒有使用 jemalloc 就沒有載入問題。經過思考,因為我目前不想要在自己的 OBS repo 放一個 jemalloc,所以暫時關掉了我放在 OpenSUSE Build Service 上 RocksDB jemalloc 的選項,這樣連結到 rocksdb 的程式或者是函式庫就不會出現載入問題。

沒有留言: