[PATCH] abrt-action-save-package-data: properly close rpm database. Closes #674.
Denys Vlasenko
dvlasenk at redhat.com
Fri Jul 19 15:24:17 UTC 2013
RPM library uses Berkeley DB, which emits warnings like this
if DB files weren't closed properly:
BDB2053 Freeing read locks for locker 0x1e0: 28718/139661746636736
This change fixes it.
Signed-off-by: Denys Vlasenko <dvlasenk at redhat.com>
---
src/daemon/abrt-action-save-package-data.c | 8 ++++++--
src/daemon/rpm.c | 8 +++++++-
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/src/daemon/abrt-action-save-package-data.c b/src/daemon/abrt-action-save-package-data.c
index c209c4b..f1a3385 100644
--- a/src/daemon/abrt-action-save-package-data.c
+++ b/src/daemon/abrt-action-save-package-data.c
@@ -426,6 +426,10 @@ int main(int argc, char **argv)
rpm_load_gpgkey((char*)li->data);
}
- return SavePackageDescriptionToDebugDump(dump_dir_name);
- /* can call rpm_destroy but do we really need to bother? we are exiting! */
+ int r = SavePackageDescriptionToDebugDump(dump_dir_name);
+
+ /* Close RPM database */
+ rpm_destroy();
+
+ return r;
}
diff --git a/src/daemon/rpm.c b/src/daemon/rpm.c
index a1f9532..1b7d660 100644
--- a/src/daemon/rpm.c
+++ b/src/daemon/rpm.c
@@ -61,9 +61,15 @@ void rpm_init()
void rpm_destroy()
{
- rpmFreeRpmrc();
rpmFreeCrypto();
rpmFreeMacros(NULL);
+ rpmFreeRpmrc();
+
+ /* RPM doc says "clean up any open iterators and databases".
+ * Observed to eliminate these Berkeley DB warnings:
+ * "BDB2053 Freeing read locks for locker 0x1e0: 28718/139661746636736"
+ */
+ rpmdbCheckTerminate(1);
list_free_with_free(list_fingerprints);
list_fingerprints = NULL;
--
1.8.1.4
More information about the Crash-catcher
mailing list