Using:
- couchbase-lite-ios V1.4 via podfile with ForestDB
or - couchbase-lite-ios self-built master(1d4b2c28) with forestdb spock(9c4bf80)
In my app i’m experiencing frequent crashes while compaction when running or started in background (e.g. via background fetch).
Stacktrace:
Crashed: Thread 0 PurpleAnt 0x1007cfe38 std::__1::__hash_const_iterator<std::__1::__hash_node<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, bool>, void*>*> std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, bool>, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, bool>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, bool>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, bool> > >::find<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) const (__hash_table:2206) 1 PurpleAnt 0x1007ce8b0 cbforest::Database::getKeyStore(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const (unordered_map:1121) 2 PurpleAnt 0x1007cefa4 cbforest::Database::updatePurgeCount() (Database.cc:227) 3 PurpleAnt 0x1007ce624 cbforest::Database::compactionCallback(_fdb_file_handle*, unsigned int, char const*, fdb_doc_struct*, unsigned long long, unsigned long long, void*) (Database.cc:406) 4 PurpleAnt 0x100813458 _fdb_compact_file(_fdb_kvs_handle*, filemgr*, btreeblk_handle*, docio_handle*, hbtrie*, hbtrie*, btree*, btree*, unsigned long long, bool) + 6636 5 PurpleAnt 0x100812438 fdb_compact_file + 2508 6 PurpleAnt 0x1007fe8cc compactor_thread(void*) + 21856 7 libsystem_pthread.dylib 0x18a3e568c _pthread_body + 240 8 libsystem_pthread.dylib 0x18a3e559c _pthread_body + 282 9 libsystem_pthread.dylib 0x18a3e2cb4 thread_start + 4
I also tried with a self-built version using couchbase-lite-ios master with a forestdb from “spock” branch to include latest fixes, especially this one: https://github.com/couchbase/forestdb/commit/5827abea5028bf05e2f00b14b7d22087213dbb27
but everything that changed was the line number in which the error happens: previously 2228, now 2206
Is it somehow possible to disable automatic compaction? As a workaround i would disable compaction when app is going into background. The error doesn’t seem to occur when compaction is running while the app is active.
Where to file a bug report for this issue? ForestDB issues seem not to be tracked in GitHub.