Submitting this bug report per bremner's request (thanks for the assist today!) The documentation for 'notmuch_database_open_with_config()' states: > In case of any failure, this function returns an error status and > sets *database to NULL. However, it's possible to trigger a failure and leave *database in a partially initialized state. Usage of this pointer causes a segfault in libnotmuch. Below is a small reproducer program that causes a no config file failure and outputs if it has a non-NULL database pointer. #include #include int main() { const char *db_path = "/home/aray/mail/"; notmuch_database_t *db = NULL; notmuch_status_t st = notmuch_database_open_with_config( db_path, NOTMUCH_DATABASE_MODE_READ_ONLY, NULL, NULL, &db, NULL); if (st != NOTMUCH_STATUS_SUCCESS) { printf("Received status: %s\n", notmuch_status_to_string(st)); if (db) { printf("Received non-null DB pointer\n"); return -1; } } return 0; } Please set 'db_path' to your notmuch database path and call the program like such: NOTMUCH_CONFIG="./nonexistent" ./reprod -- https://austinray.io Open Source Maintainer, Software Engineer, Keyboard Enthusiast GPG: 0127 ED83 B939 CCC9 8082 476E 1AA0 B115 C8AC 2C9E