Comments (9)
unfortunately, a core of the non-debug build has a little use. if it’s possible do and run a debug build of picom built from the latest commit of the next branch. when a segfault happens, do coredumpctl gdb
, then bt
and post the backtrace.
from picom.
I have a similar problem on Intel integrated hardware (Intel(R) HD Graphics 520). I will provide a debug file when I catch the crash.
from picom.
I think I managed to install a debug build of picom (I just used meson --buildtype=debug
instead of meson --buildtype=release
, I hope this is right).
I now am able to reproduce the crash at will with my XMonad configuration, but not without using XMonad-specific commands. I just need to fill a workspace with 5 or 6 windows, and then
- go to another workspace
- apply the XMonad function
killWindow
to all windows of the first workspace - delete the first workspace using
removeWorkspaceByTag
from XMonad DynamicWorkspaces extension.
Just killing the windows doesn’t crash picom. When there are not that many windows, it doesn’t crash either.
Doing coredumpctl gdb
and then bt
, I get this:
#0 0x00007f11e3a108ec in ?? () from /usr/lib/libc.so.6
#1 0x00007f11e39c1ea8 in raise () from /usr/lib/libc.so.6
#2 0x00007f11e39ab53d in abort () from /usr/lib/libc.so.6
#3 0x00007f11e39ab45c in ?? () from /usr/lib/libc.so.6
#4 0x00007f11e39ba9f6 in __assert_fail () from /usr/lib/libc.so.6
#5 0x0000563ec987f0d7 in ?? ()
#6 0x0000563ec984ca06 in ?? ()
#7 0x0000563ec984d68c in ?? ()
#8 0x00007f11e3fc60cb in ev_invoke_pending () from /usr/lib/libev.so.4
#9 0x00007f11e3fc9d10 in ev_run () from /usr/lib/libev.so.4
#10 0x0000563ec9847ac8 in ?? ()
#11 0x00007f11e39ac790 in ?? () from /usr/lib/libc.so.6
#12 0x00007f11e39ac84a in __libc_start_main () from /usr/lib/libc.so.6
#13 0x0000563ec9848e25 in ?? ()
which doesn’t look very useful. So I suspect I did something wrong. If I know what, I can easily redo this, since I can now reproduce the crash at will.
from picom.
I was able to catch a crash.
GNU gdb (Ubuntu 12.1-0ubuntu1~22.04) 12.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/picom...
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file /memfd:xshmfence (deleted) during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
warning: Can't open file anon_inode:i915.gem which was expanded to anon_inode:i915.gem during file-backed mapping note processing
[New LWP 94672]
[New LWP 94754]
[New LWP 94756]
[New LWP 94753]
[New LWP 97127]
[New LWP 94755]
[New LWP 97126]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `picom --daemon --config /home/monsterovich/.config/picom.conf'.
Program terminated with signal SIGABRT, Aborted.
#0 __pthread_kill_implementation (no_tid=0, signo=6, threadid=140535933342592) at ./nptl/pthread_kill.c:44
44 ./nptl/pthread_kill.c: Нет такого файла или каталога.
[Current thread is 1 (Thread 0x7fd112629380 (LWP 94672))]
(gdb) back
#0 __pthread_kill_implementation (no_tid=0, signo=6, threadid=140535933342592) at ./nptl/pthread_kill.c:44
#1 __pthread_kill_internal (signo=6, threadid=140535933342592) at ./nptl/pthread_kill.c:78
#2 __GI___pthread_kill (threadid=140535933342592, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#3 0x00007fd112442476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#4 0x00007fd1124287f3 in __GI_abort () at ./stdlib/abort.c:79
#5 0x00007fd11242871b in __assert_fail_base (fmt=0x7fd1125dd150 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n",
assertion=0x556fff57ef10 "!(w->flags & WIN_FLAGS_PIXMAP_NONE)", file=0x556fff57ee76 "../src/backend/backend.c", line=206, function=<optimized out>)
at ./assert/assert.c:92
#6 0x00007fd112439e96 in __GI___assert_fail (assertion=0x556fff57ef10 "!(w->flags & WIN_FLAGS_PIXMAP_NONE)", file=0x556fff57ee76 "../src/backend/backend.c",
line=206, function=0x556fff57f0b8 <__PRETTY_FUNCTION__.3> "paint_all_new") at ./assert/assert.c:101
#7 0x0000556fff55d8c8 in paint_all_new (ps=0x556ffff75920, t=0x557000c3e000, ignore_damage=false) at ../src/backend/backend.c:206
#8 0x0000556fff514400 in draw_callback_impl (loop=0x7fd112ba9720, ps=0x556ffff75920, revents=8192) at ../src/picom.c:1527
#9 0x0000556fff514525 in draw_callback (loop=0x7fd112ba9720, w=0x556ffff759e0, revents=8192) at ../src/picom.c:1553
#10 0x00007fd112b9d773 in ev_invoke_pending () from /lib/x86_64-linux-gnu/libev.so.4
#11 0x00007fd112ba1041 in ev_run () from /lib/x86_64-linux-gnu/libev.so.4
#12 0x0000556fff51983d in session_run (ps=0x556ffff75920) at ../src/picom.c:2479
#13 0x0000556fff519b9c in main (argc=4, argv=0x7fff73cca578) at ../src/picom.c:2585
from picom.
It doesn’t look like my stack trace with the missing symbols filled in. So maybe this is another bug… But what did you do apart from building with --buildtype=debug
to get those symbols?
from picom.
It doesn’t look like my stack trace with the missing symbols filled in. So maybe this is another bug… But what did you do apart from building with
--buildtype=debug
to get those symbols?
I didn't do anything, meson generates binary with debug symbols by default.
from picom.
I found out what I did wrong: I used the PKGBUILD file from the AUR (Arch User Repository) and just changed the --buildtype
and installed the resulting package. In the PKGBUILD, after meson
, ninja
is run. This seems to be the problem. I directly ran the built binary src/picom/build/src/picom
without ninja
or installing and got the following much better trace:
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0)
at pthread_kill.c:44
#1 0x00007fdc0d34d2d3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2 0x00007fdc0d2fda08 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x00007fdc0d2e6538 in __GI_abort () at abort.c:79
#4 0x00007fdc0d2e645c in __assert_fail_base (fmt=0x7fdc0d462b08 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n",
assertion=assertion@entry=0x5614fc8906d8 "!(w->flags & WIN_FLAGS_PIXMAP_NONE)",
file=file@entry=0x5614fc8905c9 "../src/backend/backend.c", line=line@entry=206,
function=function@entry=0x5614fc890800 <__PRETTY_FUNCTION__.3> "paint_all_new") at assert.c:92
#5 0x00007fdc0d2f63d6 in __assert_fail (
assertion=assertion@entry=0x5614fc8906d8 "!(w->flags & WIN_FLAGS_PIXMAP_NONE)",
file=file@entry=0x5614fc8905c9 "../src/backend/backend.c", line=line@entry=206,
function=function@entry=0x5614fc890800 <__PRETTY_FUNCTION__.3> "paint_all_new") at assert.c:101
#6 0x00005614fc8720d7 in paint_all_new (ps=0x5614fe09d000, t=<optimized out>, ignore_damage=<optimized out>)
at ../src/backend/backend.c:206
#7 0x00005614fc83fa06 in draw_callback_impl (loop=loop@entry=0x7fdc0d914060, ps=ps@entry=0x5614fe09d000,
revents=<optimized out>) at ../src/picom.c:1527
#8 0x00005614fc84068c in draw_callback (loop=0x7fdc0d914060, w=0x5614fe09d0c0, revents=<optimized out>)
at ../src/picom.c:1553
#9 0x00007fdc0d9090cb in ev_invoke_pending () from /usr/lib/libev.so.4
#10 0x00007fdc0d90cd10 in ev_run () from /usr/lib/libev.so.4
#11 0x00005614fc83aac8 in session_run (ps=0x5614fe09d000) at ../src/picom.c:2479
#12 main (argc=<optimized out>, argv=<optimized out>) at ../src/picom.c:2585
It looks very much like Monsterovich’s trace after all.
from picom.
it seems that your crashes are actually assertion failures and they’re new (i don’t remember seeing anything like this recently). and you’re both using the glx backend on an intel gpu, so this issue may be specific to intel gpus. i’ll investigate later.
from picom.
it seems that your crashes are actually assertion failures and they’re new (i don’t remember seeing anything like this recently). and you’re both using the glx backend on an intel gpu, so this issue may be specific to intel gpus. i’ll investigate later.
I think it has something to do with turning on the screen and enabling compositing (maybe even related to lightdm). There can be a case where some window doesn't have time to create a pixmap and therefore picom crashes. It's very strange why there's assert instead of just skipping the window and printing a warning.
from picom.
Related Issues (20)
- Delay & high CPU usage on dropdown menus
- Picom stops drawing during games, until alt-tab HOT 50
- rect_is_fullscreen does not take in account the task bar pannel heigth HOT 1
- Fatal Error HOT 1
- picom --invert-color-include fails when the HOME env is unset HOT 7
- Unexpectedbalck root screen as well a 100% CPU load HOT 3
- Everything but the mouse randomly freezes HOT 1
- Picom makes Krita's canvas stutter, but xcompmgr (or no compositor at all) does not HOT 5
- Picom crashes with glx backends HOT 2
- x_create_picture_with_pictfmt_and_pixmap ERROR, root_damaged ERROR HOT 4
- Picom crashes when no windows are present (dwm, Debian) HOT 1
- Does picom work with the non `code-oss` VS Code flavours? HOT 2
- Performance degradation after waking up from Suspend with Linux Kernel 6.7 HOT 9
- Blur casts a shadow over i3 title bar and windows on other monitors HOT 2
- vsync causes intermittent freezes with picom v11 HOT 33
- High CPU usage after suspend. HOT 11
- corner-radius-rules not working HOT 5
- debug logging can dead lock the X server HOT 1
- Shaders don't apply to all windows on BSPWM HOT 9
- [Request] glFinish timing HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from picom.