--- ./lib/rpmdb.c.orig 2018-08-08 13:40:18.153941351 +0000 +++ ./lib/rpmdb.c 2018-10-16 09:20:11.196708098 +0000 @@ -387,9 +387,11 @@ int rpmdbClose(rpmdb db) { rpmdb * prev, next; int rc = 0; + int dbmode; if (db == NULL) goto exit; + dbmode = db->db_mode; prev = &rpmdbRock; while ((next = *prev) != NULL && next != db) @@ -424,7 +426,7 @@ int rpmdbClose(rpmdb db) db = _free(db); - if (rpmdbRock == NULL) { + if (rpmdbRock == NULL && (dbmode & (O_RDWR|O_WRONLY)) != 0) { rpmsqActivate(0); } exit: @@ -509,7 +511,7 @@ static int openDatabase(const char * pre rc = rpmioMkpath(rpmdbHome(db), 0755, getuid(), getgid()); if (rc == 0) { /* Enable signal queue on the first db open */ - if (db->db_next == NULL) { + if (db->db_next == NULL && (db->db_mode & (O_RDWR|O_WRONLY)) != 0) { rpmsqActivate(1); }