Open nick87720z opened 3 years ago
It's certainly not just too high signals rate. I tried minimal example:
sleep (3);
puts ("usr1");
fflush (stdout);
and set with SA_NODEFER option (to not block this signal until handler is done), handles ok (though output doesn't appear before all events are done). https://gist.github.com/nick87720z/1d3efc7280d130b71ceb55398b93a0c8
I suspect, this is how event loop system is used. Event loop seems to be restarted by config reloading. But since it manages signals automatically, this causes signal handlers to be uninstalled for brief period between loop quit and new start. Some signals could pass during this period.
Although case with SIGUSR1 look not more than abuse, cases with INT,TERM and like signals should be more real if picom must handle them specially.
Platform
gentoo (calculate)
GPU, drivers, and screen setup
Intel B950 (sandybridge with ssse3), modesetting (i965), xorg-1.20.11
glxinfo -B
``` $ glxinfo -B name of display: :0 display: :0 screen: 0 direct rendering: Yes Extended renderer info (GLX_MESA_query_renderer): Vendor: Intel Open Source Technology Center (0x8086) Device: Mesa DRI Intel(R) HD Graphics 2000 (SNB GT1) (0x106) Version: 21.0.3 Accelerated: yes Video memory: 1536MB Unified memory: yes Preferred profile: core (0x1) Max core profile version: 3.3 Max compat profile version: 3.0 Max GLES1 profile version: 1.1 Max GLES[23] profile version: 3.0 OpenGL vendor string: Intel Open Source Technology Center OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 2000 (SNB GT1) OpenGL core profile version string: 3.3 (Core Profile) Mesa 21.0.3 OpenGL core profile shading language version string: 3.30 OpenGL core profile context flags: (none) OpenGL core profile profile mask: core profile OpenGL version string: 3.0 Mesa 21.0.3 OpenGL shading language version string: 1.30 OpenGL context flags: (none) OpenGL ES profile version string: OpenGL ES 3.0 Mesa 21.0.3 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00 ```Environment
custom xsession, including xfwm4 (compositing off for picom).
picom version
git commit d9c97421324b51c8beefacc7e66a2218ab3e5247
Diagnostics
``` $ picom --diagnostics [ 06/14/21 12:48:35.347 get_cfg WARN ] Dual-kawase blur is not implemented by the legacy backends, you must use the `experimental-backends` option. [ 06/14/21 12:48:35.399 glx_has_extension INFO ] Found GLX extension GLX_SGI_video_sync. [ 06/14/21 12:48:35.399 glx_has_extension INFO ] Found GLX extension GLX_SGI_swap_control. [ 06/14/21 12:48:35.399 glx_has_extension INFO ] Found GLX extension GLX_OML_sync_control. [ 06/14/21 12:48:35.399 glx_has_extension INFO ] Found GLX extension GLX_MESA_swap_control. [ 06/14/21 12:48:35.399 glx_has_extension INFO ] Found GLX extension GLX_EXT_swap_control. [ 06/14/21 12:48:35.399 glx_has_extension INFO ] Found GLX extension GLX_EXT_texture_from_pixmap. [ 06/14/21 12:48:35.399 glx_has_extension INFO ] Found GLX extension GLX_ARB_create_context. [ 06/14/21 12:48:35.399 glx_has_extension INFO ] Found GLX extension GLX_EXT_buffer_age. [ 06/14/21 12:48:35.399 glx_has_extension INFO ] Found GLX extension GLX_MESA_query_renderer. [ 06/14/21 12:48:35.462 init_render WARN ] Old backends only support blur method "kernel". Your blur setting will not be applied **Version:** vgit-d9c97 ### Extensions: * Shape: Yes * XRandR: Yes * Present: Present ### Misc: * Use Overlay: Yes * Config file used: /home/nick87720z/.config/picom.conf ### Drivers (inaccurate): modesetting ### Backend: glx [ 06/14/21 12:48:35.481 gl_has_extension INFO ] Missing GL extension GL_GREMEDY_string_marker. * Driver vendors: * GLX: Mesa Project and SGI * GL: Intel Open Source Technology Center * GL renderer: Mesa DRI Intel(R) HD Graphics 2000 (SNB GT1) * Accelerated: 1 ```Configuration:
Configuration file
``` log-level = "info"; shadow = false; shadow-radius = 20; shadow-offset-x = -20; shadow-offset-y = -20; shadow-opacity = 0.3; shadow-red = 0.0; shadow-green = 0.0; shadow-blue = 0.0; # "_GTK_FRAME_EXTENTS@:c" shadow-exclude = [ "class_g = 'Xfwm4'", "class_g = 'Conky'", "class_g ?= 'Notify-osd'", "class_g = 'Cairo-clock'", "window_type = 'dock' && class_g = 'Plank'" ]; #clear-shadow = true; shadow-ignore-shaped = false; inactive-opacity = 1.0; active-opacity = 1.0; frame-opacity = 1.0; inactive-opacity-override = false; inactive-dim = 0.2; blur-background-exclude = [ "window_type = 'desktop'", "window_type = 'notify'", "window_type = 'dock' && class_g = 'Plank'", "window_type = 'dock' && class_g = 'Tint2'", "class_g = 'Xfce4-screenshooter'" ]; fading = false; fade-in-step = 0.05; fade-out-step = 0.05; fade-exclude = [ ]; backend = "glx"; mark-wmwin-focused = true; mark-ovredir-focused = true; detect-rounded-corners = false; detect-client-opacity = true; refresh-rate = 0; vsync = true; dbe = true; glx-no-rebind-pixmap = true; glx-no-stencil = true; use-damage = true; #glx-swap-method = "buffer-age"; focus-exclude = [ "class_g = 'Cairo-clock'" ]; detect-transient = true; detect-client-leader = true; #invert-color-include = [ "class_g = 'Gcolor3'" ]; wintypes : { tooltip : { fade = true; shadow = false; full-shadow = true; opacity = 1.0; focus = true; } notify: { shadow = false; full-shadow = true; } dock: { shadow = false; full-shadow = false; } dnd: { shadow = false; } popup_menu: { opacity = 1.0; } dropdown_menu: { opacity = 1.0; } }; fade-delta = 10; blur-background = true; blur-background-frame = true; blur-background-fixed = false; resize-damage = 3; blur: { method = "dual_kawase"; # kernel, gaussian, dual_kawase size = 7; deviation = 3.0; strength = 4; kernel = "3x3gaussian"; } inactive-dim-fixed = false; dbus = true; // Paste your configuration here ```Steps of reproduction
while killall -USR1 picom; do sleep 0.15; done
Expected behavior
Should handle them.
Current Behavior
Terminated on too much signals, which I suspect to be default handler when app handler doesn't it in time (hence difference between required frequency to trigger this bug, depending on experimental backends option status). If picom was started from terminal (at least bash) - it ends output with message from shell: