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.

Reply via email to