https://bugs.kde.org/show_bug.cgi?id=474868

--- Comment #5 from sophi <k...@splitmail.link> ---
Thanks
I will try to contact package maintainer, never done this before

I tried gdb to tell me and I believe i ScreenPool::reconsiderOutputOrder might
call m_outputOrderWatcher->refresh.
I believe it calls it from vtable here:
   0x0000561f18fcde07 <+39>:    call   *0x60(%rax)

0x60 is 96, in x86_64 pointer is 8 bytes long, so 96/8 = 12 and the refresh
method is 12 in vtable (13 to be exact because it's starts from 0, but that
doesn't matter here, since the address 0x0 is element 0 and so on)
[12]: 0x561f18fa7580 <WaylandOutputOrderWatcher::refresh()>
However this is my first time analyzing vtables, so I might be wrong.


Also from crashed ShellCorona I extracted OutputOrderWatcher object and the
refresh method seems to indicate that it's WaylandOutputOrderWatcher but the
commit was for X11OutputOrderWatcher refresh method.
Missed impact perhaps?

[12]: 0x561f18fa7580 <WaylandOutputOrderWatcher::refresh()>

--------------------------- (first commit)
disassemble ScreenPool::reconsiderOutputOrder
Dump of assembler code for function _ZN10ScreenPool21reconsiderOutputOrderEv:
   0x0000561f18fcdde0 <+0>:     endbr64
   0x0000561f18fcdde4 <+4>:     push   %rbp
   0x0000561f18fcdde5 <+5>:     push   %rbx
   0x0000561f18fcdde6 <+6>:     mov    %rdi,%rbx
   0x0000561f18fcdde9 <+9>:     sub    $0x18,%rsp
   0x0000561f18fcdded <+13>:    mov    0x38(%rdi),%rdi
   0x0000561f18fcddf1 <+17>:    mov    %fs:0x28,%rax
   0x0000561f18fcddfa <+26>:    mov    %rax,0x8(%rsp)
   0x0000561f18fcddff <+31>:    xor    %eax,%eax
   0x0000561f18fcde01 <+33>:    mov    %rsp,%rbp
   0x0000561f18fcde04 <+36>:    mov    (%rdi),%rax
   0x0000561f18fcde07 <+39>:    call   *0x60(%rax)
   0x0000561f18fcde0a <+42>:    mov    0x38(%rbx),%rsi
   0x0000561f18fcde0e <+46>:    mov    %rbp,%rdi
   0x0000561f18fcde11 <+49>:    call   0x561f18fa6cd0
<_ZNK18OutputOrderWatcher11outputOrderEv>
   0x0000561f18fcde16 <+54>:    mov    %rbx,%rdi
   0x0000561f18fcde19 <+57>:    mov    %rbp,%rsi
   0x0000561f18fcde1c <+60>:    call   0x561f18fcd590
<_ZN10ScreenPool24handleOutputOrderChangedERK11QStringList>
   0x0000561f18fcde21 <+65>:    mov    %rbp,%rdi
   0x0000561f18fcde24 <+68>:    call   0x561f18f8a5e0 <_ZN5QListI7QStringED2Ev>
   0x0000561f18fcde29 <+73>:    mov    0x8(%rsp),%rax
   0x0000561f18fcde2e <+78>:    sub    %fs:0x28,%rax
   0x0000561f18fcde37 <+87>:    jne    0x561f18fcde40
<_ZN10ScreenPool21reconsiderOutputOrderEv+96>
   0x0000561f18fcde39 <+89>:    add    $0x18,%rsp
   0x0000561f18fcde3d <+93>:    pop    %rbx
   0x0000561f18fcde3e <+94>:    pop    %rbp
   0x0000561f18fcde3f <+95>:    ret
   0x0000561f18fcde40 <+96>:    call   0x561f18f7e330 <__stack_chk_fail@plt>

--------------------------- (second commit)
(gdb) print *(class ShellCorona*)0x7f82f0004bd0
... m_screenPool = 0x561f1b2a3a60

(gdb) p *(class ScreenPool*) 0x561f1b2a3a60
... m_outputOrderWatcher = 0x561f1b2a0a10

(gdb) info vtbl *(class OutputOrderWatcher*) 0x561f1b2a0a10
vtable for 'OutputOrderWatcher' @ 0x561f19013a78 (subobject @ 0x561f1b2a0a10):
[0]: 0x561f18f83070 <WaylandOutputOrderWatcher::metaObject() const>
[1]: 0x561f18f887e0 <WaylandOutputOrderWatcher::qt_metacast(char const*)>
[2]: 0x561f18f892f0 <WaylandOutputOrderWatcher::qt_metacall(QMetaObject::Call,
int, void**)>
[3]: 0x561f18f8a770 <WaylandOutputOrderWatcher::~WaylandOutputOrderWatcher()>
[4]: 0x561f18f8a840 <WaylandOutputOrderWatcher::~WaylandOutputOrderWatcher()>
[5]: 0x7f83060ef170 <QObject::event(QEvent*)>
[6]: 0x7f83060eb250 <QObject::eventFilter(QObject*, QEvent*)>
[7]: 0x7f83060eb240 <QObject::timerEvent(QTimerEvent*)>
[8]: 0x7f83060eb240 <QObject::timerEvent(QTimerEvent*)>
[9]: 0x7f83060eb240 <QObject::timerEvent(QTimerEvent*)>
[10]: 0x7f83060eb240 <QObject::timerEvent(QTimerEvent*)>
[11]: 0x7f83060eb240 <QObject::timerEvent(QTimerEvent*)>
[12]: 0x561f18fa7580 <WaylandOutputOrderWatcher::refresh()>

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to