https://bugs.kde.org/show_bug.cgi?id=511717
--- Comment #31 from Philippe Waroquiers <[email protected]> --- The mystery does not clarify :(. The fault is due to GDB asking to read "reading memory 0x31002000 size 8" This range of memory is marked as addressable(rw) by the aspacemgr trace: --397751:1: aspacem 152: anon 0030000000-0033146fff 49m rw--- What is strange is that we have two running threads for which valgrind indicates overlapping client stacks: Thread 8: status = VgTs_WaitSys syscall 202 (lwpid 397776) --397751-- cfsi range rx-mappings coverage check: Covered 0x0-0xffffffffffffffff ==397751== at 0x54558CD: syscall (syscall.S:38) ==397751== by 0x4FBBAD5: ??? (in /usr/lib/x86_64-linux-gnu/liburcu.so.8.1.0) ==397751== by 0x53C4D63: start_thread (pthread_create.c:448) ==397751== by 0x54581C3: clone (clone.S:100) client stack range: [0x30000000 0x31000FFF] client SP: 0x307FF838 valgrind stack range: [0x100508E000 0x100518DFFF] top usage: 3544 of 1048576 Thread 11: status = VgTs_WaitSys syscall 18 (lwpid 397865) --397751-- cfsi range rx-mappings coverage check: Covered 0x0-0xffffffffffffffff ==397751== at 0x54259FB: pwrite (pwrite64.c:25) ==397751== by 0x4FC8E01: ??? (in /usr/lib/x86_64-linux-gnu/liblmdb.so.0.0.0) ==397751== by 0x4FD3145: mdb_txn_commit (in /usr/lib/x86_64-linux-gnu/liblmdb.so.0.0.0) ==397751== by 0x409D09A: knot_lmdb_commit (knot_lmdb.c:320) ==397751== by 0x409DA42: knot_lmdb_quick_insert (knot_lmdb.c:525) ==397751== by 0x406BF9A: kasp_db_add_key (kasp_db.c:332) ==397751== by 0x406DC06: kasp_zone_save (kasp_zone.c:257) ==397751== by 0x40698D6: kdnssec_ctx_commit (context.c:271) ==397751== by 0x407128F: knot_dnssec_ksk_sbm_confirm (key-events.c:928) ==397751== by 0x40BAEA5: zone_ksk_sbm_confirm (commands.c:853) ==397751== by 0x40B9A8D: zones_apply (commands.c:218) ==397751== by 0x40B8B29: ctl_zone (commands.c:1940) ==397751== by 0x40B8744: ctl_exec (commands.c:2528) ==397751== by 0x4067DDC: ctl_process (process.c:112) ==397751== by 0x402DA90: ctl_process_thread (threads.c:110) ==397751== by 0x53C4D63: start_thread (pthread_create.c:448) ==397751== by 0x54581C3: clone (clone.S:100) client stack range: [0x30000000 0x32803FFF] client SP: 0x32001B38 valgrind stack range: [0x10056F1000 0x10057F0FFF] top usage: 17912 of 1048576 If we look above in the valgrind trace, we see several successive calls to register_stack with overlapping ranges : --397751-- di_notify_mmap-0: --397751-- di_notify_mmap-1: 0x30000000-0x30800fff rw- --397751:1: aspacem allocated valgrind thread stack at 0x100508c000 size 1064960 --397751:2: stacks register [start-end] [0x30000000-0x307FFFFF] as stack 7 --397751:1:syswrap- run_a_thread_NORETURN(tid=8): pre-thread_wrapper --397751:1:syswrap- thread_wrapper(tid=8,lwpid=397776): entry --397751-- di_notify_mmap-0: --397751-- di_notify_mmap-1: 0x30801000-0x34800fff --- --397751-- di_notify_mmap-0: --397751-- di_notify_mmap-1: 0x30801000-0x38800fff --- --397751-- di_notify_mmap-0: --397751-- di_notify_mmap-1: 0x30000000-0x31001fff rw- --397751:1: aspacem allocated valgrind thread stack at 0x1005190000 size 1064960 --397751:2: stacks register [start-end] [0x30000000-0x31000FFF] as stack 8 --397751-- di_notify_mmap-0: --397751-- di_notify_mmap-1: 0x30000000-0x31802fff rw- --397751:1:syswrap- run_a_thread_NORETURN(tid=9): pre-thread_wrapper --397751:1:syswrap- thread_wrapper(tid=9,lwpid=397777): entry --397751:1: aspacem allocated valgrind thread stack at 0x10055eb000 size 1064960 --397751:2: stacks register [start-end] [0x30000000-0x31801FFF] as stack 9 --397751-- di_notify_mmap-0: --397751-- di_notify_mmap-1: 0x30000000-0x32003fff rw- --397751:1:syswrap- run_a_thread_NORETURN(tid=10): pre-thread_wrapper --397751:1:syswrap- thread_wrapper(tid=10,lwpid=397778): entry --397751:1: aspacem allocated valgrind thread stack at 0x10056ef000 size 1064960 --397751:2: stacks register [start-end] [0x30000000-0x32002FFF] as stack 10 --397751-- di_notify_mmap-0: --397751-- di_notify_mmap-1: 0x30000000-0x32804fff rw- --397751:1:syswrap- run_a_thread_NORETURN(tid=11): pre-thread_wrapper --397751:1:syswrap- thread_wrapper(tid=11,lwpid=397779): entry --397751:1: aspacem allocated valgrind thread stack at 0x10057f3000 size 1064960 --397751:2: stacks register [start-end] [0x30000000-0x32803FFF] as stack 11 --397751:1:syswrap- run_a_thread_NORETURN(tid=12): pre-thread_wrapper --397751:1:syswrap- thread_wrapper(tid=12,lwpid=397780): entry Then we have some threads existing causing then deregister of some of these overlapping stacks. Below is a summary of all the register/deregister of stacks. We have a lot of successive registrations starting at the same (low) address. On my debian 12 system, doing in the valgrind build dir valgrind -d -d -d -v -v -v ./gdbserver/sleepers does not show such overlap for the register stack. When doing the same on Ubuntu 25.10, I see the same overlap as in the below trace. Valgrind guesses the stack limit of a thread at startup using the segment in which the SP is. If the segment is huge, then we obtain such overlapping guessed stacks. I am wondering what is the consequence of having such overlapping register stacks. Possibly using pthread_set_guardsize for the threads will ensure the stack segments are separated and then that will then likely allow valgrind to better guess the client stacks. If that solves the problem, then we have a more precise idea of where the SEGV originates. All that being said, I still do not understand the SEGV: The aspace mgr shows that this segment is rw and the consistency check with /proc/self/maps done at the same time does not report any problem. So, even if the overlapping stack introduce some confusions in valgrind or its gdbserver or GDB, I do not see how the read can fail. I do not have much ideas at that point in time. Maybe give even more trace by adding e.g. --trace-syscalls=yes to see more details about the mmap syscalls in the memory areas giving problems. 159 matches for "stacks.*register" in buffer: attachment.cgi?id=187428 328:--397751:2: stacks register [start-end] [0x1FFEFFE000-0x1FFF000FFF] as stack 0 1710:--397751:2: stacks register [start-end] [0x2528F000-0x2538EFFF] as stack 1 1716:--397751:2: stacks register [start-end] [0x2528F000-0x2548FFFF] as stack 2 1722:--397751:2: stacks register [start-end] [0x2528F000-0x25590FFF] as stack 3 1728:--397751:2: stacks register [start-end] [0x2528F000-0x25691FFF] as stack 4 1742:--397751:2: stacks register [start-end] [0x2528F000-0x25894FFF] as stack 5 1748:--397751:2: stacks register [start-end] [0x2528F000-0x25995FFF] as stack 6 1795:--397751:2: stacks register [start-end] [0x30000000-0x307FFFFF] as stack 7 1805:--397751:2: stacks register [start-end] [0x30000000-0x31000FFF] as stack 8 1811:--397751:2: stacks register [start-end] [0x30000000-0x31801FFF] as stack 9 1817:--397751:2: stacks register [start-end] [0x30000000-0x32002FFF] as stack 10 1823:--397751:2: stacks register [start-end] [0x30000000-0x32803FFF] as stack 11 1830:--397751:2: stacks deregister stack 10 1834:--397751:2: stacks deregister stack 9 1838:--397751:2: stacks deregister stack 11 1842:--397751:2: stacks deregister stack 8 1844:--397751:2: stacks register [start-end] [0x30000000-0x32803FFF] as stack 12 1847:--397751:2: stacks register [start-end] [0x30000000-0x32002FFF] as stack 13 1850:--397751:2: stacks register [start-end] [0x30000000-0x31801FFF] as stack 14 1853:--397751:2: stacks register [start-end] [0x30000000-0x31000FFF] as stack 15 1858:--397751:2: stacks deregister stack 15 1862:--397751:2: stacks deregister stack 13 1866:--397751:2: stacks deregister stack 12 1870:--397751:2: stacks deregister stack 14 1872:--397751:2: stacks register [start-end] [0x30000000-0x31000FFF] as stack 16 1873:--397751:2: stacks register [start-end] [0x30000000-0x31801FFF] as stack 17 1874:--397751:2: stacks register [start-end] [0x30000000-0x32002FFF] as stack 18 1883:--397751:2: stacks deregister stack 18 1887:--397751:2: stacks deregister stack 16 1891:--397751:2: stacks deregister stack 17 1895:--397751:2: stacks register [start-end] [0x27D9D000-0x27E9CFFF] as stack 19 1900:--397751:2: stacks register [start-end] [0x27D9D000-0x27F9DFFF] as stack 20 1913:--397751:2: stacks register [start-end] [0x30000000-0x32002FFF] as stack 21 1930:--397751:2: stacks register [start-end] [0x30000000-0x31801FFF] as stack 22 1934:--397751:2: stacks register [start-end] [0x30000000-0x31000FFF] as stack 23 1938:--397751:2: stacks register [start-end] [0x30000000-0x32803FFF] as stack 24 1944:--397751:2: stacks register [start-end] [0x30000000-0x33145FFF] as stack 25 1949:--397751:2: stacks deregister stack 25 1955:--397751:2: stacks deregister stack 23 1959:--397751:2: stacks deregister stack 22 1963:--397751:2: stacks deregister stack 24 3971:--397751:2: stacks register [start-end] [0x30000000-0x33145FFF] as stack 26 3980:--397751:2: stacks register [start-end] [0x30000000-0x32803FFF] as stack 27 8356:--397751:2: stacks register [start-end] [0x30000000-0x31000FFF] as stack 28 8357:--397751:2: stacks register [start-end] [0x30000000-0x31801FFF] as stack 29 8365:--397751:2: stacks register [start-end] [0x30000000-0x33946FFF] as stack 30 8371:--397751:2: stacks register [start-end] [0x58C6B000-0x5946AFFF] as stack 31 8378:--397751:2: stacks deregister stack 30 8382:--397751:2: stacks deregister stack 29 8386:--397751:2: stacks deregister stack 28 8390:--397751:2: stacks deregister stack 31 8392:--397751:2: stacks register [start-end] [0x58C6B000-0x5946AFFF] as stack 32 8393:--397751:2: stacks register [start-end] [0x30000000-0x33946FFF] as stack 33 8394:--397751:2: stacks register [start-end] [0x30000000-0x31801FFF] as stack 34 8395:--397751:2: stacks register [start-end] [0x30000000-0x31000FFF] as stack 35 8406:--397751:2: stacks deregister stack 33 8412:--397751:2: stacks deregister stack 35 8416:--397751:2: stacks deregister stack 32 8420:--397751:2: stacks deregister stack 34 12752:--397751:2: stacks register [start-end] [0x30000000-0x31000FFF] as stack 36 15090:--397751:2: stacks register [start-end] [0x30000000-0x31801FFF] as stack 37 15091:--397751:2: stacks register [start-end] [0x30000000-0x33946FFF] as stack 38 15092:--397751:2: stacks register [start-end] [0x58C6B000-0x5946AFFF] as stack 39 15103:--397751:2: stacks deregister stack 37 15107:--397751:2: stacks deregister stack 39 15109:--397751:2: stacks register [start-end] [0x58C6B000-0x59C6BFFF] as stack 40 15112:--397751:2: stacks register [start-end] [0x58C6B000-0x5A46CFFF] as stack 41 15120:--397751:2: stacks register [start-end] [0x58C6B000-0x5AC6DFFF] as stack 42 15127:--397751:2: stacks deregister stack 38 15131:--397751:2: stacks deregister stack 41 15133:--397751:2: stacks register [start-end] [0x58C6B000-0x5B46EFFF] as stack 43 15140:--397751:2: stacks deregister stack 40 15142:--397751:2: stacks register [start-end] [0x58C6B000-0x5BC6FFFF] as stack 44 15145:--397751:2: stacks register [start-end] [0x60000000-0x607FFFFF] as stack 45 15153:--397751:2: stacks register [start-end] [0x60000000-0x61000FFF] as stack 46 15159:--397751:2: stacks register [start-end] [0x60000000-0x61801FFF] as stack 47 15165:--397751:2: stacks register [start-end] [0x60000000-0x62002FFF] as stack 48 15170:--397751:2: stacks deregister stack 46 15174:--397751:2: stacks deregister stack 43 15178:--397751:2: stacks deregister stack 45 15182:--397751:2: stacks deregister stack 48 15186:--397751:2: stacks deregister stack 42 15190:--397751:2: stacks deregister stack 44 15194:--397751:2: stacks deregister stack 47 15196:--397751:2: stacks register [start-end] [0x60000000-0x62002FFF] as stack 49 15197:--397751:2: stacks register [start-end] [0x60000000-0x61801FFF] as stack 50 15198:--397751:2: stacks register [start-end] [0x60000000-0x61000FFF] as stack 51 15199:--397751:2: stacks register [start-end] [0x60000000-0x607FFFFF] as stack 52 15202:--397751:2: stacks register [start-end] [0x30000000-0x31801FFF] as stack 53 15217:--397751:2: stacks deregister stack 51 15221:--397751:2: stacks deregister stack 49 15227:--397751:2: stacks deregister stack 52 15231:--397751:2: stacks deregister stack 53 15233:--397751:2: stacks register [start-end] [0x30000000-0x33946FFF] as stack 54 15244:--397751:2: stacks deregister stack 50 15246:--397751:2: stacks register [start-end] [0x58C6B000-0x5946AFFF] as stack 55 15249:--397751:2: stacks register [start-end] [0x58C6B000-0x59C6BFFF] as stack 56 15258:--397751:2: stacks deregister stack 54 15260:--397751:2: stacks register [start-end] [0x58C6B000-0x5A46CFFF] as stack 57 15263:--397751:2: stacks register [start-end] [0x58C6B000-0x5AC6DFFF] as stack 58 15266:--397751:2: stacks register [start-end] [0x58C6B000-0x5B46EFFF] as stack 59 15277:--397751:2: stacks deregister stack 59 15281:--397751:2: stacks deregister stack 55 15285:--397751:2: stacks deregister stack 56 15289:--397751:2: stacks deregister stack 58 15291:--397751:2: stacks register [start-end] [0x58C6B000-0x5BC6FFFF] as stack 60 15296:--397751:2: stacks deregister stack 60 15300:--397751:2: stacks deregister stack 57 17575:--397751:2: stacks register [start-end] [0x59C6D000-0x5BC6FFFF] as stack 61 19960:--397751:2: stacks register [start-end] [0x59C6D000-0x5B46EFFF] as stack 62 19961:--397751:2: stacks register [start-end] [0x59C6D000-0x5AC6DFFF] as stack 63 19962:--397751:2: stacks register [start-end] [0x59C6D000-0x5A46CFFF] as stack 64 19965:--397751:2: stacks register [start-end] [0x30000000-0x31801FFF] as stack 65 19978:--397751:2: stacks deregister stack 62 19982:--397751:2: stacks deregister stack 63 19986:--397751:2: stacks deregister stack 64 19990:--397751:2: stacks deregister stack 65 19992:--397751:2: stacks register [start-end] [0x30000000-0x31801FFF] as stack 66 19993:--397751:2: stacks register [start-end] [0x59C6D000-0x5A46CFFF] as stack 67 19994:--397751:2: stacks register [start-end] [0x59C6D000-0x5AC6DFFF] as stack 68 19999:--397751:2: stacks register [start-end] [0x59C6D000-0x5B46EFFF] as stack 69 20006:--397751:2: stacks deregister stack 66 20010:--397751:2: stacks deregister stack 67 20014:--397751:2: stacks deregister stack 69 20018:--397751:2: stacks deregister stack 68 20020:--397751:2: stacks register [start-end] [0x59C6D000-0x5B46EFFF] as stack 70 20023:--397751:2: stacks register [start-end] [0x59C6D000-0x5AC6DFFF] as stack 71 20024:--397751:2: stacks register [start-end] [0x59C6D000-0x5A46CFFF] as stack 72 20031:--397751:2: stacks deregister stack 71 20035:--397751:2: stacks deregister stack 72 20039:--397751:2: stacks deregister stack 70 20081:--397751:2: stacks register [start-end] [0x59C6D000-0x5A46CFFF] as stack 73 20082:--397751:2: stacks register [start-end] [0x59C6D000-0x5AC6DFFF] as stack 74 20083:--397751:2: stacks register [start-end] [0x59C6D000-0x5B46EFFF] as stack 75 20092:--397751:2: stacks deregister stack 74 20096:--397751:2: stacks deregister stack 75 20098:--397751:2: stacks register [start-end] [0x30000000-0x31801FFF] as stack 76 20103:--397751:2: stacks register [start-end] [0x3325E000-0x33A5DFFF] as stack 77 20108:--397751:2: stacks register [start-end] [0x58C6B000-0x5946AFFF] as stack 78 20111:--397751:2: stacks register [start-end] [0x58C6B000-0x59C6BFFF] as stack 79 20120:--397751:2: stacks deregister stack 77 20124:--397751:2: stacks deregister stack 78 20126:--397751:2: stacks register [start-end] [0x64000000-0x647FFFFF] as stack 80 20129:--397751:2: stacks register [start-end] [0x64000000-0x65000FFF] as stack 81 20138:--397751:2: stacks deregister stack 81 20140:--397751:2: stacks register [start-end] [0x64000000-0x65801FFF] as stack 82 20143:--397751:2: stacks register [start-end] [0x64000000-0x66002FFF] as stack 83 20150:--397751:2: stacks deregister stack 82 20158:--397751:2: stacks deregister stack 79 20162:--397751:2: stacks deregister stack 76 20166:--397751:2: stacks deregister stack 73 20172:--397751:2: stacks deregister stack 80 20176:--397751:2: stacks deregister stack 83 20178:--397751:2: stacks register [start-end] [0x64000000-0x66803FFF] as stack 84 20183:--397751:2: stacks deregister stack 84 20187:--397751:2: stacks register [start-end] [0x64801000-0x66803FFF] as stack 85 20190:--397751:2: stacks register [start-end] [0x64801000-0x66002FFF] as stack 86 20193:--397751:2: stacks register [start-end] [0x64801000-0x65801FFF] as stack 87 20196:--397751:2: stacks register [start-end] [0x64801000-0x65000FFF] as stack 88 -- You are receiving this mail because: You are watching all bug changes.
