Hello Bjørn, hello Sudip, I just tried to locate the line where the crash happens from the dmesg output and got to this location [1].
Unfortunately the CVS tree seems not up to date or I was using the wrong one. At least there was a change in geoip.c in line 166 [2] [3]. Kind regards, Bernhard [1] https://sources.debian.org/src/geoip/1.6.12-7/libGeoIP/GeoIP.c/#L2038 [2] https://sources.debian.org/src/milter-greylist/4.6.2-3/geoip.c/#L166 [3] https://sources.debian.org/src/milter-greylist/4.6.4-1/geoip.c/#L166
From submitter: Aug 23 22:12:23 louie kernel: milter-greylist[192919]: segfault at 28 ip 00007fbaf22fe8d9 sp 00007fbaee77c670 error 4 in libGeoIP.so.1.6.12[7fbaf22fc000+1b000] Aug 23 22:12:23 louie kernel: Code: 90 e9 6b d8 ff ff 66 66 2e 0f 1f 84 00 00 00 00 00 48 85 f6 0f 84 8f 00 00 00 41 54 49 89 d4 53 48 89 fb 48 89 f7 48 83 ec 08 <0f> be 43 28 3c 0c 74 4f 3c 12 74 4b 48 8b 3d cc 26 03 00 48 8d 35 # https://wiki.debian.org/InterpretingKernelOutputAtProcessCrash "error 4" == 0b00000100 0: no page found 0: read access 1: user-mode access echo -n "find /b ..., ..., 0x" && \ echo "90 e9 6b d8 ff ff 66 66 2e 0f 1f 84 00 00 00 00 00 48 85 f6 0f 84 8f 00 00 00 41 54 49 89 d4 53 48 89 fb 48 89 f7 48 83 ec 08 <0f> be 43 28 3c 0c 74 4f 3c 12 74 4b 48 8b 3d cc 26 03 00 48 8d 35" \ | sed 's/[<>]//g' | sed 's/ /, 0x/g' # Bullseye/stable amd64 qemu VM 2021-09-13 echo "set enable-bracketed-paste off" >> /etc/inputrc; bash apt update apt dist-upgrade apt install mc git git-cvs devscripts rsync rsyncgdb milter-greylist apt install milter-greylist-dbgsym libgeoip1-dbgsym apt build-dep libgeoip1 mkdir /home/benutzer/source/libgeoip1/orig -p cd /home/benutzer/source/libgeoip1/orig apt source libgeoip1 cd gdb -q set width 0 set pagination off directory /home/benutzer/source/libgeoip1/orig/geoip-1.6.12/libGeoIP file /usr/sbin/milter-greylist tb main run pipe info target | grep "text.*Geo" find /b ..., ..., 0x90, 0xe9, 0x6b, 0xd8, 0xff, 0xff, 0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x85, 0xf6, 0x0f, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x41, 0x54, 0x49, 0x89, 0xd4, 0x53, 0x48, 0x89, 0xfb, 0x48, 0x89, 0xf7, 0x48, 0x83, 0xec, 0x08, 0x0f, 0xbe, 0x43, 0x28, 0x3c, 0x0c, 0x74, 0x4f, 0x3c, 0x12, 0x74, 0x4b, 0x48, 0x8b, 0x3d, 0xcc, 0x26, 0x03, 0x00, 0x48, 0x8d, 0x35 b * (0x7ffff7f908af + 42) benutzer@debian:~$ gdb -q (gdb) set width 0 (gdb) set pagination off (gdb) directory /home/benutzer/source/libgeoip1/orig/geoip-1.6.12/libGeoIP Source directories searched: /home/benutzer/source/libgeoip1/orig/geoip-1.6.12/libGeoIP:$cdir:$cwd (gdb) file /usr/sbin/milter-greylist Reading symbols from /usr/sbin/milter-greylist... Reading symbols from /usr/lib/debug/.build-id/26/9d1dfedbfac4bcaccb58f1c1312cfbcf2b27a9.debug... (gdb) tb main Temporary breakpoint 1 at 0x6cc0: file milter-greylist.c, line 1617. (gdb) run Starting program: /usr/sbin/milter-greylist [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Temporary breakpoint 1, main (argc=1, argv=0x7fffffffe608) at milter-greylist.c:1617 1617 milter-greylist.c: Datei oder Verzeichnis nicht gefunden. (gdb) pipe info target | grep "text.*Geo" 0x00007ffff7f8e5f0 - 0x00007ffff7fa8cac is .text in /lib/x86_64-linux-gnu/libGeoIP.so.1 (gdb) find /b 0x00007ffff7f8e5f0, 0x00007ffff7fa8cac, 0x90, 0xe9, 0x6b, 0xd8, 0xff, 0xff, 0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x85, 0xf6, 0x0f, 0x84, 0x8f, 0x00, 0x00, 0x00, 0x41, 0x54, 0x49, 0x89, 0xd4, 0x53, 0x48, 0x89, 0xfb, 0x48, 0x89, 0xf7, 0x48, 0x83, 0xec, 0x08, 0x0f, 0xbe, 0x43, 0x28, 0x3c, 0x0c, 0x74, 0x4f, 0x3c, 0x12, 0x74, 0x4b, 0x48, 0x8b, 0x3d, 0xcc, 0x26, 0x03, 0x00, 0x48, 0x8d, 0x35 0x7ffff7f908af 1 pattern found. (gdb) b * (0x7ffff7f908af + 42) Breakpoint 2 at 0x7ffff7f908d9: file GeoIP.c, line 2038. (gdb) info b Num Type Disp Enb Address What 2 breakpoint keep y 0x00007ffff7f908d9 in GeoIP_id_by_addr_v6_gl at GeoIP.c:2038 (gdb) display/i 0x7ffff7f908af + 42 1: x/i 0x7ffff7f908af + 42 0x7ffff7f908d9 <GeoIP_id_by_addr_v6_gl+25>: movsbl 0x28(%rbx),%eax (gdb) list GeoIP.c:2036 2031 2032 int GeoIP_id_by_addr_v6_gl(GeoIP *gi, const char *addr, GeoIPLookup *gl) { 2033 geoipv6_t ipnum; 2034 int ret; 2035 if (addr == NULL) { 2036 return 0; 2037 } 2038 if (gi->databaseType != GEOIP_COUNTRY_EDITION_V6 && 2039 gi->databaseType != GEOIP_LARGE_COUNTRY_EDITION_V6) { 2040 printf("Invalid database type %s, expected %s\n", (gdb) https://sources.debian.org/src/geoip/1.6.12-7/libGeoIP/GeoIP.c/#L2038 # http://hcpnet.free.fr/milter-greylist/ mkdir /home/benutzer/source/milter-graylist/cvs -p cd /home/benutzer/source/milter-graylist/cvs export CVS_RSH=ssh; cvs -danon...@anoncvs.fr.netbsd.org:/milter-greylist co -P milter-greylist cvs log | head -n100 -- seems kind of outdated ... https://sources.debian.org/src/milter-greylist/4.6.2-3/geoip.c/#L166 https://sources.debian.org/src/milter-greylist/4.6.4-1/geoip.c/#L166