Description of problem: A customer needed to get the number of entries in a given DB. Based on this article we asked him to run dbscan: https://github.com/richm/scripts/wiki/dbmon.sh But dbscan is crashing in the customer environment. Version-Release number of selected component (if applicable): 389 1.2.11.15-84. How reproducible: Steps to Reproduce: For instance, # dbscan -f /var/lib/dirsrv/slapd-389/db/customer/id2entry.db4 -t 200 > slapd-389_customer.txt /usr/bin/dbscan: line 51: 28783 Segmentation fault (core dumped) ${dir}/${COMMAND} "$@" # Invalid read/write reported by valgrind. ==21395== Invalid write of size 1 ==21395== at 0x400F60: format_raw (dbscan.c:266) ==21395== by 0x401919: format (dbscan.c:272) ==21395== by 0x401919: display_item (dbscan.c:769) ==21395== by 0x402FF7: main (dbscan.c:1295) ==21395== Address 0x4c60de8 is 0 bytes after a block of size 200 alloc'd ==21395== at 0x4A07208: malloc (in /opt/rh/devtoolset-3/root/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==21395== by 0x4A0737C: realloc (in /opt/rh/devtoolset-3/root/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==21395== by 0x401964: display_item (dbscan.c:733) ==21395== by 0x402FF7: main (dbscan.c:1295) ==21395== ==21395== Invalid read of size 1 ==21395== at 0x35E1247E2C: vfprintf (in /lib64/libc-2.12.so) ==21395== by 0x35E12FFC10: __printf_chk (in /lib64/libc-2.12.so) ==21395== by 0x402FF7: main (dbscan.c:1295) ==21395== Address 0x4c60de8 is 0 bytes after a block of size 200 alloc'd ==21395== at 0x4A07208: malloc (in /opt/rh/devtoolset-3/root/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==21395== by 0x4A0737C: realloc (in /opt/rh/devtoolset-3/root/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==21395== by 0x401964: display_item (dbscan.c:733) ==21395== by 0x402FF7: main (dbscan.c:1295) See also: https://bugzilla.redhat.com/show_bug.cgi?id=1408976#c15
git patch file (master) 0001-Ticket-49104-dbscan-bin-crashing-due-to-a-segmentati.patch
git patch file (master) -- CI test 0002-Ticket-49104-Add-CI-test.patch
git patch file (lib389) - Support additional options (-t truncate -R) 0001-dbscan-Support-additional-options-t-truncate-R.patch
I'm happy with the fix. The test may have issue if we don't have valgrind installed (or has been built with asan). However, that sounds like a whole lot of "my problem only", so I will ack this, and when I encounter the issue I'll fix it myself then.
Thanks for your work!
Thanks for reviewing the patches, William!
It implies you did not have valgrind? ;) If we run the test suites on a newly allocated VM, that'd happen easily, indeed...:( Since lib389 has a test API which uses valgrind, we may want to add "Require valgrind" to the lib389 spec file? Of course, that does not solve all the cases, but it might reduce the number (hopefully)...
Reviewed by William (Thank you!!)
Pushed to master: e998632..c5a67ce master -> master commit efeb2f6e873df32ce7545fa1fb319806d2108fda commit c5a67ce1ad297cf59b5dd0e47c9896e261aba08c
Pushed to 389-ds-base-1.3.5: 3ac12cb..db458b4 389-ds-base-1.3.5 -> 389-ds-base-1.3.5 commit 3e3bcee42d3cb800457127e0d71ed7ce7a5d65a0 commit db458b4be7293c7c6cb390b32109b635a1867fd9
Pushed to 389-ds-base-1.2.11: 90702d1..b73428c 389-ds-base-1.2.11 -> 389-ds-base-1.2.11 commit 93946f9e853d5f17b894ffb11a1dcfaeb9698890 commit b73428c307e25b636d1833c22680571dc9960fc2
Metadata Update from @nhosoi: - Issue assigned to nhosoi - Issue set to the milestone: 1.2.11.33
389-ds-base is moving from Pagure to Github. This means that new issues and pull requests will be accepted only in 389-ds-base's github repository.
This issue has been cloned to Github and is available here: - https://github.com/389ds/389-ds-base/issues/2163
If you want to receive further updates on the issue, please navigate to the github issue and click on subscribe button.
subscribe
Thank you for understanding. We apologize for all inconvenience.
Metadata Update from @spichugi: - Issue close_status updated to: wontfix (was: Fixed)