[systemsettings] [Bug 442659] GTK3 Window decoration assets generated by kde-gtk-config are now all blank with Breeze window decoration

2021-10-04 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=442659

Ash Blake  changed:

   What|Removed |Added

  Latest Commit||https://invent.kde.org/plas
   ||ma/kde-gtk-config/commit/c1
   ||0dff60289e8aa7b1989c49280b5
   ||5711daaf14e
 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #8 from Ash Blake  ---
Git commit c10dff60289e8aa7b1989c49280b55711daaf14e by Ash Blake.
Committed on 02/10/2021 at 17:09.
Pushed by ngraham into branch 'master'.

kwin_bridge: Load DecorationButton without the "button" keyword

Plugin keywords have been deprecated. Breeze and Oxygen no longer use
the "button" keyword when registering their button plugins, so loading
them now fails and blank assets get generated.

Attempt loading DecorationButton without using the keyword, and if this
fails, try the deprecated keyword like in the KWin commit 6f110bca.

M  +12   -2kded/kwin_bridge/dummydecorationbridge.cpp

https://invent.kde.org/plasma/kde-gtk-config/commit/c10dff60289e8aa7b1989c49280b55711daaf14e

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

[kwin] [Bug 439873] Switching users isn't working on Wayland

2021-09-28 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=439873

--- Comment #27 from Ash Blake  ---
(In reply to Zamundaaa from comment #21)
> The patch should "fix" that but I'd still like to find the actual source of
> the problem. 

The stability has definitely improved with that patch, but some crashes still
happened, way less often than before.

Now I also applied the patches from MR 1467 and I can't trigger a crash
anymore, and I don't see "DrmGpu::findWorkingCombination failed to find any
functional combinations!" anymore in the logs.

Looks like these two merge requests resolve this bug.

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

[kwin] [Bug 439873] Switching users isn't working on Wayland

2021-09-27 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=439873

--- Comment #26 from Ash Blake  ---
Created attachment 141964
  --> https://bugs.kde.org/attachment.cgi?id=141964&action=edit
KWin DRM log messages from full Plasma session

I got some of these errors in my wayland-session.log now.
They're different, all of them are 'permission denied'

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

[kwin] [Bug 439873] Switching users isn't working on Wayland

2021-09-27 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=439873

--- Comment #23 from Ash Blake  ---
Created attachment 141956
  --> https://bugs.kde.org/attachment.cgi?id=141956&action=edit
KWin DRM log from another machine (AMD GPU)

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

[kwin] [Bug 439873] Switching users isn't working on Wayland

2021-09-27 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=439873

--- Comment #22 from Ash Blake  ---
Created attachment 141955
  --> https://bugs.kde.org/attachment.cgi?id=141955&action=edit
KWin DRM log messages

(In reply to Zamundaaa from comment #21)
> You likely have some lines with something like "Atomic test for
> CommitMode::Commit failed! Invalid Argument" and a bunch of numbers below it
> in your ~/.local/share/sddm/wayland-session.log when KWin crashes. Could you
> have a look at what the exact error messages are?

For some reason they weren't in the log anymore, so I just ran in a TTY:
$ (QT_LOGGING_RULES="kwin_wayland_drm.*=true" kwin_wayland 2>&1) >
kwin_wayland_drm.log

Are these fine or should I get logs from the full Plasma session?

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

[kwin] [Bug 439873] Switching users isn't working on Wayland

2021-09-27 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=439873

--- Comment #19 from Ash Blake  ---
(In reply to Ash Blake from comment #18)
> and these multiple deletions may be normal

Unfortunately, there is something wrong anyways even though it is not multiple
deletion.

Right before the crash, a pipeline that was involved in it got created and then
deleted exactly three times in a row, so this is the same situation as
previously but it turns out the destruction behaviour is actually normal.

updateOutputs should not have received a deleted pipeline from
findWorkingCombination though, so something is wrong here.


Construction:
$28 = (KWin::DrmPipeline * const) 0x56548a2aebd0
#0  KWin::DrmPipeline::DrmPipeline(KWin::DrmGpu*, KWin::DrmConnector*,
KWin::DrmCrtc*, KWin::DrmPlane*) (this=this@entry=0x56548a2aebd0,
gpu=0x565489679430, conn=0x565489e91be0, crtc=crtc@entry=0x5654896e4eb0,
primaryPlane=primaryPlane@entry=0x5654896be1b0) at
/home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_pipeline.cpp:37
#1  0x7f0549d5e49c in operator()(KWin::DrmCrtc*, KWin::DrmPlane*) const
(__closure=__closure@entry=0x7ffe8d5e8660, crtc=0x5654896e4eb0,
primaryPlane=0x5654896be1b0) at
/home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_gpu.cpp:364

Destruction:
$29 = (KWin::DrmPipeline * const) 0x56548a2aebd0
#0  KWin::DrmPipeline::~DrmPipeline() (this=0x56548a2aebd0,
__in_chrg=) at /usr/include/c++/11.1.0/bits/atomic_base.h:479
#1  0x7f0549d5e99e in operator()(KWin::DrmCrtc*, KWin::DrmPlane*) const
(__closure=__closure@entry=0x7ffe8d5e8660, crtc=,
primaryPlane=0x7ffe8d5e85a8) at
/home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_gpu.cpp:373



Relevant lines from the segfault backtrace, with yet another exact point of
crash:
#0 
QSharedPointer::deref(QtSharedPointer::ExternalRefCountData*)
(dd=0x56540002) at /usr/include/qt/QtCore/qsharedpointer_impl.h:454
#1  QSharedPointer::deref() (this=) at
/usr/include/qt/QtCore/qsharedpointer_impl.h:453
#2  QSharedPointer::~QSharedPointer() (this=, __in_chrg=) at
/usr/include/qt/QtCore/qsharedpointer_impl.h:310
#3  QSharedPointer::operator=(QSharedPointer
const&) (other=, other=..., this=0x56548a2aebf8) at
/usr/include/qt/QtCore/qsharedpointer_impl.h:333
#4  KWin::DrmPipeline::present(QSharedPointer const&)
(this=0x56548a2aebd0, buffer=...) at
/home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_pipeline.cpp:81
#5  0x7f0549d55bb8 in
KWin::DrmOutput::present(QSharedPointer const&, QRegion)
(this=this@entry=0x565489e97d50, buffer=..., damagedRegion=...) at
/home/ash/kde/src/kwin/src/plugins/platforms/drm/drm_output.cpp:394

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

[kwin] [Bug 439873] Switching users isn't working on Wayland

2021-09-27 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=439873

--- Comment #18 from Ash Blake  ---
(In reply to Ash Blake from comment #17)

Nevermind, I totally forgot allocation could just happen at the same address
after deleting something there and these multiple deletions may be normal. 
I'll redo it, also tracking construction this time.

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

[kwin] [Bug 439873] Switching users isn't working on Wayland

2021-09-27 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=439873

Ash Blake  changed:

   What|Removed |Added

 Attachment #141922|0   |1
is obsolete||

--- Comment #17 from Ash Blake  ---
Created attachment 141950
  --> https://bugs.kde.org/attachment.cgi?id=141950&action=edit
Debugging session with both good and bad VT switches

This is an annotated log from the debugging session with backtraces of each
pipeline destruction, including the addresses of said pipelines. 

For convenience, you can also view it with basic formatting here:
https://gist.github.com/telepathine/01bd060e5df3ece55f6b46bb63a78078

It features both the successful case and the failed one, which differs quite
notably in the pipeline destruction department - one pipeline gets deleted
three times, then that address happens to be reused as for some reason some
DrmOutput still has it. This leads to a segfault originating from
KWin::DrmPipeline::setSyncMode later on.

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

[kwin] [Bug 439873] Switching users isn't working on Wayland

2021-09-27 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=439873

--- Comment #16 from Ash Blake  ---
This crash is also quite unpredictable, sometimes I can switch a lot of times
between two sessions with no crash, and sometimes it will crash on the first
try. Usually if the crash already occurs in one of the sessions, it will then
keep reoccuring whenever switching away from it and back.

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

[kwin] [Bug 439873] Switching users isn't working on Wayland

2021-09-27 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=439873

--- Comment #15 from Ash Blake  ---
(In reply to Zamundaaa from comment #14)
> Sounds a lot like https://bugs.kde.org/show_bug.cgi?id=442677

It really does, but I already have the commit that fixed that bug in my KWin
build. 
Seems like there's some other problem that causes the same crash on VT
switches, and there's also this weird crash in KWin::DrmObject::getProp that
happens sometimes too. If I notice crashes in some other places, I'll upload
those backtraces too. 

The getProp crash case is particularly weird. At a quick glance it seems that
the crtc in a pipeline could not suddenly end up null under normal
circumstances, as there doesn't seem to be a method that changes a
DrmPipeline's m_crtc after initialization. Maybe the memory for it was freed
and used by something else, but something still used the pointer to the deleted
pipeline? I guess a situation like this could cause all kinds of crashes in
various places.

I'll try setting up breakpoints on destructors of various drm-related objects
and keeping track of the objects' addresses to compare them after a crash
happens to check if that is the case.

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

[kwin] [Bug 439873] Switching users isn't working on Wayland

2021-09-26 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=439873

--- Comment #13 from Ash Blake  ---
And with the crash from the getProp call in KWin::DrmPipeline::setSyncMode,
m_crtc has been a null pointer in at least two backtraces

(gdb) p *m_pipeline
$2 = {
  m_output = 0x5592ffd79a3b,
  m_gpu = 0x5597a695a010,
  m_connector = 0x18,
  m_crtc = 0x0,
  m_primaryPlane = 0x0,
  m_primaryBuffer = {
value = 0x3ff0,
d = 0x3ff0
  },
  m_oldTestBuffer = {
value = 0x408e,
d = 0x0
  },
  m_legacyNeedsModeset = false,
  m_cursor = {
pos = {
  xp = 0,
  yp = 1072693248
},
hotspot = {
  xp = 0,
  yp = 1083047936
},
buffer = {
  value = 0x403d,
  d = 0x408e0800
},
dirtyBo = false,
dirtyPos = false
  },
  m_allObjects = {
d = 0x0
  },
  m_formats = {
d = 0x403d
  },
  m_lastFlags = 0
}

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

[kwin] [Bug 439873] Switching users isn't working on Wayland

2021-09-26 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=439873

--- Comment #12 from Ash Blake  ---
(In reply to Ash Blake from comment #11)
> Created attachment 141939 [details]


The contents of m_gpu look odd - cursor size of 262147x458757, insanely high
file descriptor and some suspicious looking addresses.
It seems like DrmGpu got destroyed, but it still got used somehow.



(gdb) p *m_gpu
$11 = {
  ...
  m_backend = 0x7000700060007,
  m_eglBackend = {
wp = {
  d = 0x7000600070005,
  value = 0x6000700020007
}
  },
  m_devNode = {
d = 0x3000100020003
  },
  m_cursorSize = {
wd = 262147,
ht = 458757
  },
  m_fd = 262145,
  m_deviceId = 1970354902204420,
  m_atomicModeSetting = 6,
  m_useEglStreams = false,
  m_gbmDevice = 0x7000100050007,
  m_eglDisplay = 0x700070003,
  m_presentationClock = 327687,
  m_socketNotifier = 0x7000700070007,
  m_addFB2ModifiersSupported = 5,
  m_planes = {
d = 0x7000100030007
  },
  m_crtcs = {
d = 0x556bab5abab0
  },
  m_connectors = {
d = 0x556bab6581b0
  },
  m_pipelines = {
d = 0x556bab56b5b0
  },
  m_drmOutputs = {
d = 0x556babd27990
  },
  m_outputs = {
d = 0x556babe865c0
  },
  m_leaseOutputs = {
d = 0x7f08040086f0
  },
  m_leaseDevice = 0x556bab56b330
}

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

[kwin] [Bug 439873] Switching users isn't working on Wayland

2021-09-26 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=439873

--- Comment #11 from Ash Blake  ---
Created attachment 141939
  --> https://bugs.kde.org/attachment.cgi?id=141939&action=edit
Another backtrace, crash in DrmPipeline::populateAtomicValues

Another crash on VT switch. obj pointed to an unreadable location.

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

[kwin] [Bug 438010] kwin crashes when clicking on MPV with a pen

2021-09-26 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438010

Ash Blake  changed:

   What|Removed |Added

  Latest Commit||https://invent.kde.org/plas
   ||ma/kwin/commit/242de4373706
   ||324696a9bfe48b1ac9e2f7e2caa
   ||2
 Status|REPORTED|RESOLVED
 Resolution|--- |FIXED

--- Comment #14 from Ash Blake  ---
Git commit 242de4373706324696a9bfe48b1ac9e2f7e2caa2 by Ash Blake.
Committed on 26/09/2021 at 09:02.
Pushed by apol into branch 'master'.

tablet: Check if client is supported before sending tool button

M  +3-0src/input.cpp

https://invent.kde.org/plasma/kwin/commit/242de4373706324696a9bfe48b1ac9e2f7e2caa2

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

[ksmserver] [Bug 442852] Fast user switching is broken since 5.23 beta

2021-09-26 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=442852

--- Comment #4 from Ash Blake  ---
Proposed fix that also fixes the original warnings:
https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1081

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

[ksmserver] [Bug 442852] Fast user switching is broken since 5.23 beta

2021-09-26 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=442852

Ash Blake  changed:

   What|Removed |Added

 CC||telepath...@tutanota.com

--- Comment #2 from Ash Blake  ---
This is a regression from commit 714ce4045e0cbbba1d440b2fcb6f547f2680799f in
plasma-workspace.

The property m which exposed the model has been removed from UserDelegate, but
it wasn't unused. In SessionManagementScreen, userListCurrentModelData was
supposed to be pointing at userListView.currentItem.m which is now undefined.

The only usage of userListCurrentModelData is in LockScreenUi.qml:436, where
the TypeError occurs. 

Reverting that commit makes user switching work again.

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

[kwin] [Bug 439873] Switching users isn't working on Wayland

2021-09-26 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=439873

--- Comment #9 from Ash Blake  ---
Created attachment 141923
  --> https://bugs.kde.org/attachment.cgi?id=141923&action=edit
Screen recording showing the problem

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

[kwin] [Bug 439873] Switching users isn't working on Wayland

2021-09-26 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=439873

--- Comment #8 from Ash Blake  ---
Created attachment 141922
  --> https://bugs.kde.org/attachment.cgi?id=141922&action=edit
Backtrace (git master)

The old user's and new user's backtraces look the same.

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

[kwin] [Bug 439873] Switching users isn't working on Wayland

2021-09-26 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=439873

Ash Blake  changed:

   What|Removed |Added

 CC||telepath...@tutanota.com

--- Comment #7 from Ash Blake  ---
(In reply to Nate Graham from comment #4)
> On Wayland, I get to the login screen, but logging into the other user
> fails; after I enter the other user's password and click the login button I
> get kicked back to the lock screen of my existing session. 

This works for me, the new user's session starts every time.
However, either the old user's session or the new user's session will crash
when switching.
I have kwin_wayland coredumps from both users and I'll upload the backtraces
soon.

(In reply to Nate Graham from comment #6)
> Maybe the bug is that it didn't succeed in logging *me* into that user?
(In reply to Nate Graham from comment #5) 
> ~/kde/usr/bin/ksmserver

It probably failed to log in as the other user because you tried to run the
same development KDE session, and the other user wouldn't be able to read and
execute anything in your home directory. startplasma-wayland won't run, so the
new user will only be running the systemd user daemon and whatever stuff it
started.

Give konqi execute access to your home directory so he can cd into it, and make
him the group of $HOME/kde so he can read and execute things in there:
$ setfacl -m u:konqi:x $HOME
$ chown -R $USER:konqi $HOME/kde

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

[kwin] [Bug 438010] kwin crashes when clicking on MPV with a pen

2021-09-24 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438010

--- Comment #13 from Ash Blake  ---
This happened because there was no check if the resource is valid before
calling sendButton. 
I created a merge request:
https://invent.kde.org/plasma/kwin/-/merge_requests/1461

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

[kwin] [Bug 438010] kwin crashes when clicking on MPV with a pen

2021-09-24 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438010

--- Comment #12 from Ash Blake  ---
I attached GDB to KWin and checked where the null pointer came from in
TabletToolV2InterfacePrivate::targetResource().

m_surface was not null, but later resourceMap().value(*client) returned 0x0.

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

[kwin] [Bug 438010] kwin crashes when clicking on MPV with a pen

2021-09-24 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438010

--- Comment #11 from Ash Blake  ---
I rebuilt libwayland with debug symbols.

Resource was a null pointer:
#0  wl_resource_post_event (resource=0x0, opcode=17) at
../wayland-1.19.0/src/wayland-server.c:248

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

[kwin] [Bug 438010] kwin crashes when clicking on MPV with a pen

2021-09-24 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438010

Ash Blake  changed:

   What|Removed |Added

 CC||telepath...@tutanota.com

--- Comment #10 from Ash Blake  ---
Created attachment 141879
  --> https://bugs.kde.org/attachment.cgi?id=141879&action=edit
Backtrace from current git master

I can reproduce this as well, with a Huion tablet.
I don't know how to make GDB show line numbers for functions called via
std::bind, so here's the disassembly of the part around frame #1:

   ...
   0x7f0e976df57f <+95>:mov%ebp,%esi
   0x7f0e976df581 <+97>:call   0x7f0e97625150
<_ZN14KWaylandServer21TabletToolV2Interface10sendButtonEjb@plt>
=> 0x7f0e976df586 <+102>:   add$0x8,%rsp
   0x7f0e976df58a <+106>:   mov$0x1,%eax
   0x7f0e976df58f <+111>:   pop%rbx
   ...

Looks like this happened in kwin/src/input.cpp:1862

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-24 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

--- Comment #37 from Ash Blake  ---
(In reply to Vlad Zahorodnii from comment #36)
> Created attachment 141876 [details]
> Potential solution (untested)
> 
> If you apply the attached patch, does the issue go away?

Yes, I just tested it with 1000 windows and there are no leaked descriptors. In
the strace output, there are now close() calls for every FD. When using a
Jetbrains IDE everything works fine as well.

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-24 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

--- Comment #34 from Ash Blake  ---
(In reply to Vlad Zahorodnii from comment #33)
> Thanks for the great analysis, Ash! This is definitely very strange. At
> quick glance, I don't see how file descriptors can be leaked in kwin.

Well, it doesn't seem to be KWin that leaks them. It happens along the way in
libwayland.

This one is perhaps more useful - same test as above, but only one window gets
created with a 16ms lifetime. It appears this is actually enough to induce the
bug, and patterns are more visible.

  close(4071) = 0
  recvmsg(44,...,cmsg_data=[4071],...) = 152
  close(4071) = 0
  recvmsg(44,...,cmsg_data=[4034],...) = 152
  close(4034) = 0
  recvmsg(48,...,cmsg_data=[4034, 4035],...) = 16
  recvmsg(44,...,cmsg_data=[4071],...) = 152
  close(4071) = 0
  recvmsg(48,...,cmsg_data=[4071, 4079],...) = 16
  recvmsg(44,...,cmsg_data=[4150],...) = 152
  close(4150) = 0
  recvmsg(48,...,cmsg_data=[4150, 4608],...) = 16
  recvmsg(44,...,cmsg_data=[4610],...) = 152
  close(4610) = 0
  recvmsg(48,...,cmsg_data=[4610, 4611],...) = 16
  recvmsg(44,...,cmsg_data=[4612],...) = 152
  close(4612) = 0
  recvmsg(48,...,cmsg_data=[4612, 4615],...) = 16
  recvmsg(44,...,cmsg_data=[4618],...) = 152
  close(4618) = 0
  recvmsg(48,...,cmsg_data=[4618, 4619],...) = 16
  recvmsg(44,...,cmsg_data=[4620],...) = 152
  close(4620) = 0
  recvmsg(48,...,cmsg_data=[4620, 4621],...) = 16
  ^CThese descriptors were left open:
  4034, 4035, 4071, 4079, 4150, 4608, 4610, 4611, 4612, 4615, 4618, 4619, 4620,
4621

KWin does close every descriptor it receives. However, sometimes the process
does not receive one descriptor, but two - and KWin itself is not aware of the
second one, nor is it supposed to.


This is the bug-free scenario (100ms lifetime):
  close(4622) = 0
  recvmsg(44,...,cmsg_data=[4622],...) = 152
  close(4622) = 0
  recvmsg(48,...,cmsg_data=[4622, 5710],...) = 16
  recvmsg(44,...,cmsg_data=[4622],...) = 152
  close(4622) = 0
  recvmsg(48,...,cmsg_data=[4622, 5710],...) = 16
  recvmsg(44,...,cmsg_data=[4622],...) = 152
  close(4622) = 0
  recvmsg(48,...,cmsg_data=[4622, 5710],...) = 16
  recvmsg(44,...,cmsg_data=[4622],...) = 152
  close(4622) = 0
  recvmsg(48,...,cmsg_data=[4622, 5710],...) = 16
  recvmsg(44,...,cmsg_data=[4622],...) = 152
  close(4622) = 0
  recvmsg(48,...,cmsg_data=[4622, 5710],...) = 16
  recvmsg(44,...,cmsg_data=[4622],...) = 152
  close(4622) = 0
  recvmsg(48,...,cmsg_data=[4622, 5710],...) = 16
  recvmsg(44,...,cmsg_data=[4622],...) = 152
  close(4622) = 0
  recvmsg(48,...,cmsg_data=[4622, 5710],...) = 16
  ^CThese descriptors were left open:
  4622, 5710

(And those two descriptors got closed shortly after)

Here the same thing happens, however things happen slowly enough so that the
descriptor can get reused, hence the fd amount is not rising. 

It seems like this is not KWin's fault, but it's Wayland that is doing
something weird when marshaling those descriptors.
org_kde_plasma_window_get_icon is supposed to accept one file descriptor, and
plasmashell does give it exactly one descriptor. Things get messed up along the
way, and this is not an issue anywhere in the KDE code.

While researching the topic of SCM_RIGHTS, I stumbled upon this link:
https://gist.github.com/kentonv/bc7592af98c68ba2738f4436920868dc

This part sounds like it could be a problem here:
> However, as always, recvmsg() calls on the receiving end don't necessarily 
> map 1:1 to sendmsg() calls. Messages can be coalesced or split.

Sounds like things can get mixed up when messages are getting sent fast enough.

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-24 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

--- Comment #32 from Ash Blake  ---
Created attachment 141875
  --> https://bugs.kde.org/attachment.cgi?id=141875&action=edit
A Python script that parses strace output for FD information

I wrote a script to parse strace output and abbreviate it, displaying only
close() calls and recvmsg() calls, but filtered by cmsg_type=SCM_RIGHTS and
abbreviated so that only the cmsg_data part containing newly received file
descriptors is visible.

After terminating the script with Ctrl+C, it will display all the file
descriptors that have been received by the KWin process, but not closed.

This is the output in a bug-free situation (the reproducing program was ran
with a burst size of 20 and window lifetime of 100ms, which does not trigger
the bug)

$ sudo strace -e trace=recvmsg,close -p `pidof kwin_wayland` 2>&1 | python
process_strace.py
close(5670) = 0
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670],...) = 84
recvmsg(48,...,cmsg_data=[5670],...) = 8
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
recvmsg(44,...,cmsg_data=[5670],...) = 152
close(5670) = 0
recvmsg(48,...,cmsg_data=[5670, 5675],...) = 16
^CThese descriptors were left open:
5670, 5675

The mentioned descriptors have been however closed shortly after.


This is the output with also 20 windows, but a lifetime of 16ms:
$ sudo strace -e trace=recvmsg,close -p `pidof kwin_wayland` 2>&1 | python
process_strace.py
recvmsg(44,...,cmsg_data=[5696],...) = 152
close(5696) = 0
recvmsg(48,...,cmsg_data=[5696, 5697],...) = 16
recvmsg(44,...,cmsg_data=[5696],...) = 152
close(5696) = 0
recvmsg(48,...,cmsg_data=[5696, 5697],...) = 16
recvmsg(44,...,cmsg_data=[5700],...) = 152
close(5700) = 0
recvmsg(48,...,cmsg_data=[5700, 5701],...) = 16
recvmsg(44,...,cmsg_data=[5700],...) = 152
close(5700) = 0
recvmsg(44,...,cmsg_data=[5700],...) = 152
close(5700) = 0
recvmsg(48,...,cmsg_data=[5700, 5701],...) = 16
recvmsg(44,...,cmsg_data=[5702],...) = 152
close(5702)  

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-24 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

--- Comment #31 from Ash Blake  ---
(In reply to Ash Blake from comment #30)
>   break PlasmaWindow::Private::iconChangedCallback
>   commands
>   silent
>   printf "hello\n"
>   end

Oops, forgot a continue there.
  break PlasmaWindow::Private::iconChangedCallback
  commands
  silent
  printf "hello\n"
  cont
  end

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-24 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

--- Comment #30 from Ash Blake  ---
> The short burst length of 2 was motivated by observing the popup windows
> flicker without any content sometimes, before the actual popup appeared.

Post scriptum: in fact, when GDB is attached to plasmashell in non-stop mode
and a breakpoint is set in PlasmaWindow::Private::iconChangedCallback with
commands specified so that it does not pause execution, for instance:

  break PlasmaWindow::Private::iconChangedCallback
  commands
  silent
  printf "hello\n"
  end

, we can observe the string "hello" appearing twice when a single popup window
appears, and also twice when a single popup disappears, suggesting there was
another window that appeared for several miliseconds before getting destroyed.

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-24 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

--- Comment #29 from Ash Blake  ---
Created attachment 141874
  --> https://bugs.kde.org/attachment.cgi?id=141874&action=edit
A C program that reproduces the bug

I figured out which behaviour of the Jetbrains IDEs causes the bug to occur and
I wrote a program that replicates it, so the bug can be reproduced reliably and
without the need to install any software.

This program will repeatedly create a specified amount of windows, waiting some
time before destroying the current window and creating the next one. After
that, it will wait a specified amount of time and repeat the whole thing.

The amount of windows and the time constants are optional program arguments.
The default settings are supposed to replicate a realistic scenario that could
happen during the IDE usage. They are as follows:
  - (arg1) burst size: 2
  - (arg2) window lifetime (ms): 16
  - (arg3) post-burst wait time (ms): 3000
The short burst length of 2 was motivated by observing the popup windows
flicker without any content sometimes, before the actual popup appeared.

On my machine, this burst size and window lifetime causes the KWin's file
descriptor count to increase by 3 each repetition, same as when a popup is
opened normally in a Jetbrains IDE. Of course, if such settings do not cause
bug reproduction in your environment, start by increasing the burst size. If
the bug still isn't reproduced with a high amount of created windows, start
decreasing the window lifetime.

Some observations: 
1. If the window lifetime is large enough to reliably observe the window's icon
appearing on the taskbar, this bug does not occur. On my machine, a window
lifetime of 60ms is the minimum one that does not cause KWin's file descriptor
amount to notably rise at any point in time, even with a burst size of 9
windows.
2. Window lifetimes less or equal to 4ms will cause KWin to lag, up to the
point of a complete freeze (which resolves during the wait time). Of course
this is a terribly unrealistic scenario and no application would ever do that,
but watch out when testing.


Compilation:
$ gcc reproduce_438097.c -lX11 -o reproduce_438097

Usage
$ ./reproduce_438097 [burst size] [window lifetime] [post-burst wait time]

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-23 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

--- Comment #27 from Ash Blake  ---
The file descriptor flood comes from PlasmaWindow::Private::iconChangedCallback
(kwayland/src/client/plasmawindowmanagement.cpp:655, master branch).
This can be easily verified by catching pipe2 in the plasmashell process - 
the backtrace will show this function. Occurences of pipe2 in the strace
output for plasmashell correlate with the amount of KWin's file descriptors.

After calling the org_kde_plasma_window_get_icon interface, the FDs get copied
over to KWin's process using Wayland's proxy magic, which seems to be using 
the sendmsg and recvmsg syscalls with SCM_RIGHTS ancillary messages, which 
enable passing open descriptors between processes.

The function which gets called after marshaling the FDs by the Wayland's proxy 
thingy is PlasmaWindowInterfacePrivate::org_kde_plasma_window_get_icon
(kwayland-server/src/server/plasmawindowmanagement_interface.cpp:437)

Things get really odd now. Both of those functions look fine to me - it doesn't 
look like either the server side or the client side would leave a descriptor 
open after finishing its work. I walked through both the icon read and write in 
GDB, and everything was seemingly handled correctly for the cases I observed.

Despite no errors, many of these supposedly closed descriptors did still appear 
in /proc/$KWIN_PID/fd. I have no idea what could be going on.  

For a test, I replaced  org_kde_plasma_window_get_icon with a function that
only 
calls close(fd). Somehow, the KWin process still had rapidly increasing amounts 
of FDs, even though this time it was just supposed to close them ASAP.

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-23 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

--- Comment #25 from Ash Blake  ---
This is pretty weird. I just tried running IDEA in KWin only, started from a
TTY.
The file descriptor amount does not skyrocket, and everything is stable.

It also works fine in nested KWin inside a Plasma session.
Seems like some other Plasma component is causing KWin to leak file
descriptors.

I tried killing various combinations of Plasma processes, and it looks like
killing
plasmashell, xdg-desktop-portal, and xdg-desktop-portal-kde helps.
KWin does not leak file descriptors anymore, and it does not crash.

I guess plasmashell and xdg-desktop-portal-kde could be trying to read some
information
about the popup window, but failure might not be handled correctly and new pipe
descriptors 
get created over and over during each retry attempt until KWin crashes.

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-22 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

--- Comment #24 from Ash Blake  ---
Created attachment 141808
  --> https://bugs.kde.org/attachment.cgi?id=141808&action=edit
Timelapse of lsof count, after increasing the open fd limit to 8192

This shows the test running for much longer (5 minutes), after max file
descriptors 
for KWin were increased. It could run for a bit longer as fds were not
exhausted yet. 
The interesting thing is how again plasmashell crashed early.

This proves that things just go crazy after the file descriptor limit is
exhausted,
and there is no direct problem in AnimationEffect. KWin crashes in that place,
but
the real problem is the file descriptor leak and all kinds of chaotic behaviour
it 
can cause.


Are there any logs I can provide to help debug this issue?

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-22 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

--- Comment #23 from Ash Blake  ---
Created attachment 141807
  --> https://bugs.kde.org/attachment.cgi?id=141807&action=edit
Outputs of lsof -p $KWIN_PID taken every second, from the test start to KWin
crash

Additional logs for #22

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-22 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

--- Comment #22 from Ash Blake  ---
Created attachment 141806
  --> https://bugs.kde.org/attachment.cgi?id=141806&action=edit
Screencast demonstrating the rising amount of open files by KWin

Regarding the previous error about too many open files:

This screencast shows the count of open files during the popup window test.
It is steadily rising, and does not decrease after stopping the test, nor
after quitting IntelliJ IDEA completely. 
If the test gets stopped at, say, 1000 open fds, after resuming it
a crash happens pretty quickly.

The screencast ends when KWin crashes, which happens after around 1400
file descriptors get opened.

In the following message I will attach a .tar.gz archive containing the
output of lsof -p $KWIN_PID taken every second since starting the test.

The offending descriptors are mostly pipes.

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-22 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

--- Comment #21 from Ash Blake  ---
This time KWin didn't crash completely, but entered a weird state. 
Plasmashell stopped working, but most of the applications were still running, 
including IDEA. I stopped the test, because if it continued it would most
likely
result in a crash. 

It is not possible to restart plasmashell right now, nor launch any new
program.


These errors appeared in wayland-session.log when plasmashell crashed:

  file descriptor expected, object (308), message get_icon(7h)
  error in client communication (pid 496515)
  QMetaProperty::read: Unable to handle unregistered datatype
'KWin::SessionState' 
  for property 'KWin::EffectsHandlerImpl::sessionState'
  wl_display@1: error 1: invalid arguments for
org_kde_plasma_window@308.get_icon


This appeared in terminal when trying to restart plasmashell:

  wl_display@1: error 1: invalid arguments for wl_shm@81.create_pool
  The Wayland connection experienced a fatal error: Invalid argument


And around the same time, this appeared in wayland-session.log:

  file descriptor expected, object (81), message create_pool(nhi)
  error in client communication (pid 498931)
  QMetaProperty::read: Unable to handle unregistered datatype
'KWin::SessionState' 
  for property 'KWin::EffectsHandlerImpl::sessionState'


While typing this message, Firefox and a bunch of other things have crashed.
The following got logged to wayland-session.log:

  file descriptor expected, object (30), message add(hu)
  error in client communication (pid 499807)
  wl_display@1: error 1: invalid arguments for
zwp_linux_buffer_params...@30.add
  [266 00:35:02.451499] [glfw error 65544]: Wayland: fatal display error:
Invalid argument
  file descriptor expected, object (30), message add(hu)
  error in client communication (pid 499827)
  wl_display@1: error 1: invalid arguments for
zwp_linux_buffer_params...@30.add
  [266 00:35:06.638735] [glfw error 65544]: Wayland: fatal display error:
Invalid argument
  file descriptor expected, object (30), message add(hu)
  error in client communication (pid 499851)
  file descriptor expected, object (30), message add(hu)
  error in client communication (pid 499907)
  file descriptor expected, object (30), message add(hu)
  error in client communication (pid 499954)
  wl_display@1: error 1: invalid arguments for
zwp_linux_buffer_params...@30.add
  [266 00:35:18.863341] [glfw error 65544]: Wayland: fatal display error:
Invalid argument
  file descriptor expected, object (63), message add(hu)
  error in client communication (pid 499370)
  file descriptor expected, object (7), message create_pool(nhi)
  error in client communication (pid 500198)
  file descriptor expected, object (7), message create_pool(nhi)
  error in client communication (pid 500233)
  kwin_core: Could not trust "/usr/bin/plasma-browser-integration-host" sha ""
""


This is followed by 6649 repetitions of this line:

  failed to accept: Too many open files

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-22 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

--- Comment #20 from Ash Blake  ---
This short script can be used to trigger a crash:

#!/bin/bash
win_id=$(sort <(xdotool search --name "Content window") <(xdotool search
--class "jetbrains-idea") | uniq -d)
sleep 10
while :
do
  xdotool key --window $win_id period
  sleep 0.1
  xdotool key --window $win_id BackSpace
done

After opening a project in IDEA and typing something like 'System' in a line, 
run the script and switch back to the IntelliJ IDEA window. 

For me, with automated keymashing it takes 420-450 popups to crash the Wayland
session. On X11, it's completely stable even though the window identifiers also
rapidly increase. I terminated the test after around 1000 popups.

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-22 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

--- Comment #19 from Ash Blake  ---
Created attachment 141801
  --> https://bugs.kde.org/attachment.cgi?id=141801&action=edit
Code completion popup window IDs in the debug console

Update: It appears that the crashes are highly correlated with the amount of 
popup windows opened in total during a session of coding.

Each new popup causes an increment in the hexadecimal window ID and the
window's 
caption (win1, win2, win3, etc.) seen in the KWin debug console.

For me, the crash happens somewhere around win300. 

I reproduced the crash three times in a row by typing a name of some object
then 
repeatedly mashing dot and backspace keys, so that the autocompletion popups 
flash rapidly. 

Because the window IDs increase so quickly and the problem happens around a
similar 
amount of open popup windows, could this be some sort of overflow problem? 

Maybe this could explain the weird corruption described in my previous two
comments, 
where some fields of the EffectWindow even looked sensible, but the vtable
located 
at the beginning of memory allocated for the EffectWindow was completely
ruined.

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-22 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

Ash Blake  changed:

   What|Removed |Added

Version|5.22.1  |5.22.90

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-22 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

--- Comment #18 from Ash Blake  ---
I didn't get a crash so far, but I revisited the previous coredump, as it seems
weird that the EffectWindow was at least a bit intact this time.

Disassembly of the current instruction and the one before it:
0x7fb16c02e4c2 <...postPaintScreenEv+1682>  mov(%rdi),%rax
  > 0x7fb16c02e4c5 <...postPaintScreenEv+1685>  call   *0x90(%rax)
The RDI register contained the address of the EffectWindow, same as in
entry.key

EffectWindow::addLayerRepaint is virtual, so the address of the actual function
EffectWindowImpl::addLayerRepaint has to be read from the vtable.

(In this case) the first few bytes of EffectWindow should contain a vtable ptr, 
which is then read into RAX by 'mov (%rdi),%rax'.

The EffectWindowImpl::addLayerRepaint function pointer is then expected to 
exist at RAX + 0x90.

It looks like the vtable pointer points to an invalid location:
  (gdb) p/x $rax
$23 = 0x55f806f2e
  (gdb) x/x $rax
0x55f806f2e:Cannot access memory at address 0x55f806f2e

And vtable+0x90 is also unreadable:
  (gdb) x/x $rax+0x90
0x55f806fbe:Cannot access memory at address 0x55f806fbe

In the coredump from yesterday, the situation is the same:
0x7f9fafd984c2 <...postPaintScreenEv+1682>  mov(%rdi),%rax
  > 0x7f9fafd984c5 <...postPaintScreenEv+1685>  call   *0x90(%rax)

  (gdb) p/x $rax
$1 = 0x55f06b86305a
  (gdb) x/x $rax
0x55f06b86305a: Cannot access memory at address 0x55f06b86305a
  (gdb) x/x $rax+0x90
0x55f06b8630ea: Cannot access memory at address 0x55f06b8630ea


Yesterday the EffectWindow was destroyed completely, and the member variables
looked pretty much random. 

In today's crash it seems like the EffectWindow was in the process of getting 
deleted, as some of the member variables looked intact. The vtable however 
already got corrupted, which made the call result in a segfault.

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-22 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

--- Comment #17 from Ash Blake  ---
This time, however, it seems EffectWindow was not completely destroyed.

Unlike in the last crash, the data inside EffectWindow is not complete garbage.
For instance, the addresses in toplevel and EffectWindow::Private pointers look
more sensible, dataMap contains valid pointers to QHashData::shared_null, and
x11Client is true.

  (gdb) p *(EffectWindowImpl*)(entry.i->key)
$10 = {
   = {
 = {}, 
members of KWin::EffectWindow:
static staticMetaObject = {
  ...
},
d = {
  d = 0x55f806b0fa80
}
  }, 
  members of KWin::EffectWindowImpl:
  static staticMetaObject = {
...
  },
  toplevel = 0x55f80706bcf0,
  sw = 0x0,
  dataMap = {
{
  d = 0x7fb16aa6e5c0 ,
  e = 0x7fb16aa6e5c0 
}
  },
  managed = true,
  waylandClient = false,
  x11Client = true
}

Inspection of toplevel:

  (gdb) p *(Toplevel*)$ew.toplevel
{
   = {}, 
  members of KWin::Toplevel:
  static staticMetaObject = {
...
  },
  m_frameGeometry = {
x1 = 640,
y1 = 547,
x2 = 1030,
y2 = 654
  },
  m_clientGeometry = {
x1 = 640,
y1 = 547,
x2 = 1030,
y2 = 654
  },
  m_bufferGeometry = {
x1 = 640,
y1 = 547,
x2 = 1030,
y2 = 654
  },
  m_visual = 59,
  bit_depth = 24,
  info = 0x55f806a48670,
  ready_for_painting = true,
  m_internalFBO = {
value = 0x0,
d = 0x0
  },
  m_internalImage = ,
  m_internalId = {
data1 = 3760014763,
data2 = 36097,
data3 = 19896,
data4 = "\246\035\236h\342\216t\223"
  },
  m_client = {
m_window = 18875715,
m_destroy = false,
m_logicGeometry = {
  x1 = 0,
  y1 = 0,
  x2 = -1,
  y2 = -1
}
  },
  is_shape = false,
  effect_window = 0x0,
  m_shadow = 0x0,
  resource_name = {
d = 0x55f806b26260
  },
  resource_class = {
d = 0x55f805f58430
  },
  m_clientMachine = 0x55f806442ca0,
  m_wmClientLeader = 18874376,
  opaque_region = {
d = 0x7fb16b3071e0 
  },
  m_shapeRegion = {
d = 0x55f806cc0a30
  },
  m_shapeRegionIsValid = true,
  m_output = 0x55f805b4d020,
  m_skipCloseAnimation = false,
  m_surfaceId = 0,
  m_surface = 0x0,
  m_screenScale = 1,
  m_opacity = 1,
  m_stackingOrder = 5
}

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-22 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

--- Comment #16 from Ash Blake  ---
Okay, it crashed again. The backtrace looks the same as the last one.
The crash is again in kwin4_effect_fade:

  (gdb) p this
$3 = (KWin::ScriptedEffect * const) 0x55f805fa1440
  (gdb) set $data_start = (char*)this->m_effectName->d +
this->m_effectName->d->offset
  (gdb) set $len = this->m_effectName->d->size
  (gdb) set $i = 0
  (gdb) while $i < 2*$len
   >printf "%c", *($data_start + $i)
   >set $i = $i + 2
   >end
kwin4_effect_fade


I'll test the Glide window open/close animation now, as it's
a native one and may behave differently. I suppose there's no
point in testing Scale as it's a scripted effect and it will 
probably have the same problem Fade has.

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-21 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

--- Comment #15 from Ash Blake  ---
Additional information about that EffectWindow, as I forgot it's actually an
instance of EffectWindowImpl and didn't dump members of the latter. 
Both the toplevel and sw pointers lead to inaccessible memory addresses.

(gdb) p *(KWin::EffectWindowImpl *)entry.i->key
...
  members of KWin::EffectWindowImpl:
  static staticMetaObject = {
d = {
  superdata = {
direct = 0x7f9fafdb2900 
  },
  stringdata = 0x7f9fb01ae880 ,
  data = 0x7f9fb01ae840 ,
  static_metacall = 0x7f9faff9e1a0
,
  relatedMetaObjects = 0x0,
  extradata = 0x0
}
  },
  toplevel = 0x239043d,
  sw = 0x20a0282,
  dataMap = {
{
  d = 0x239043d,
  e = 0x239043d
}
  },
  managed = false,
  waylandClient = false,
  x11Client = false
...

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

[kwin] [Bug 438097] [AnimationEffect] kwin_wayland sometimes crashes when xwayland tries to display a popup

2021-09-21 Thread Ash Blake
https://bugs.kde.org/show_bug.cgi?id=438097

Ash Blake  changed:

   What|Removed |Added

 CC||telepath...@tutanota.com

--- Comment #14 from Ash Blake  ---
Created attachment 141780
  --> https://bugs.kde.org/attachment.cgi?id=141780&action=edit
Backtrace from 5.22.90

This is a backtrace from Plasma 5.22.90 from the Arch Linux kde-unstable repo,
with the KWin package rebuilt from source to provide debug symbols.

The crash happened randomly while using Jetbrains IntelliJ IDEA.

My effects setup is mostly default, I only enabled the new Overview effect.
Effect list:
 - kwin4_effect_windowaperture
 - kwin4_effect_squash
 - kwin4_effect_sessionquit
 - kwin4_effect_morphingpopups
 - kwin4_effect_maximize
 - kwin4_effect_logout
 - kwin4_effect_login
 - kwin4_effect_fullscreen
 - kwin4_effect_frozenapp
 - kwin4_effect_fadingpopups
 - kwin4_effect_fade
 - kwin4_effect_dialogparent
 - zoom
 - slidingpopups
 - slide
 - screenshot
 - desktopgrid
 - colorpicker
 - presentwindows
 - overview
 - highlightwindow
 - blur
 - contrast
 - startupfeedback
 - screenedge
 - screentransform
 - kscreen


I analysed the core dump with GDB - the crash happened in kwin4_effect_fade. 
Redacted log from the gdb session (at the innermost stack frame):

  (gdb) set print pretty on
  (gdb) set print object on
  (gdb) p *this

$1 = (KWin::ScriptedEffect) {
...
members of KWin::ScriptedEffect:
...
m_effectName = {
d = 0x55f534b8f590
},
...
}

  (gdb) p this->m_effectName->d

$3 = (QString::Data *) 0x55f534b8f590

  (gdb) set $data_start = (char*)this->m_effectName->d +
this->m_effectName->d->offset
  (gdb) set $len = this->m_effectName->d->size
  (gdb) set $i = 0
  (gdb) while $i < 2*$len
   >printf "%c", *($data_start + $i)
   >set $i = $i + 2
   >end

kwin4_effect_fade

When the crash happens again, I'll check if it was the same effect.
If so, I'll disable it and test some more.

Some information about that EffectWindow pointer:
  (gdb) p *(entry.i->key)

$45 = {
   = {}, 
  members of KWin::EffectWindow:
  static staticMetaObject = {
d = {
  superdata = {
direct = 0x7f9fae97c740 
  },
  stringdata = 0x7f9fafda5ae0 ,
  data = 0x7f9fafda55a0 ,
  static_metacall = 0x7f9fafd8ced0
,
  relatedMetaObjects = 0x0,
  extradata = 0x0
}
  },
  d = {
d = 0x20a0282
  }
}

  (gdb) p &(entry.i->key->d)
$33 = (QScopedPointer > *) 0x55f53571a4d0

  (gdb) p entry.i->key->d.d
$34 = (KWin::EffectWindow::Private *) 0x20a0282

  (gdb) p *(entry.i->key->d.d)
Cannot access memory at address 0x20a0282

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