Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dunst crashes periodically #630

Closed
deceptikon opened this issue May 21, 2019 · 23 comments
Closed

dunst crashes periodically #630

deceptikon opened this issue May 21, 2019 · 23 comments
Labels
Milestone

Comments

@deceptikon
Copy link

deceptikon commented May 21, 2019

I run dunst on manjaro, installed it from community packages.
Last few weeks I observe periodical crashes, as I guess, caused by Slack notifications.
Error is as following:

~>>> dunst
WARNING: No icon found in path: 'flameshot'
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 12 (X_ConfigureWindow)
Value in failed request: 0x0
Serial number of failed request: 431233
Current serial number in output stream: 431233

~ >>> dunst -v
Dunst - A customizable and lightweight notification-daemon 1.4.0 (2019-03-30)

Warning about flameshot is unrelated to crash, it occured some time before it crashed.

Will append dbus-monitor log later, when the error occurs again.

@tsipinakis
Copy link
Member

tsipinakis commented May 22, 2019

Hi,

Can't really say why it happened from the error posted.

As you said the dbus-monitor log when it happens would be great and additionally if you can, it would also be useful to get a backtrace from the crash.
For that, ensure that you have the debug symbols installed and run dunst as gdb -ex run dunst -ex bt.

@deceptikon
Copy link
Author

Hi Nikos,

Attaching obtained logs:

~ >>> gdb -ex run dunst -ex bt
GNU gdb (GDB) 8.3
Copyright (C) 2019 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-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
http://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 dunst...
(No debugging symbols found in dunst)
Starting program: /usr/bin/dunst
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7ffff687c700 (LWP 20241)]
[New Thread 0x7ffff607b700 (LWP 20242)]
[New Thread 0x7ffff5595700 (LWP 20243)]
[New Thread 0x7ffff4d94700 (LWP 20414)]
[New Thread 0x7fffe7fff700 (LWP 20415)]
[New Thread 0x7fffe77fe700 (LWP 20416)]
[New Thread 0x7fffe6ffd700 (LWP 20417)]
[Thread 0x7fffe6ffd700 (LWP 20417) exited]
[Thread 0x7fffe77fe700 (LWP 20416) exited]
[Thread 0x7fffe7fff700 (LWP 20415) exited]
[Thread 0x7ffff4d94700 (LWP 20414) exited]
[Thread 0x7ffff607b700 (LWP 20242) exited]
[New Thread 0x7ffff607b700 (LWP 20814)]
[New Thread 0x7fffe77fe700 (LWP 20815)]
[Thread 0x7fffe77fe700 (LWP 20815) exited]
[Thread 0x7ffff607b700 (LWP 20814) exited]
[New Thread 0x7ffff607b700 (LWP 21615)]
[New Thread 0x7fffe77fe700 (LWP 21616)]
[Thread 0x7fffe77fe700 (LWP 21616) exited]
[Thread 0x7ffff607b700 (LWP 21615) exited]
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 12 (X_ConfigureWindow)
Value in failed request: 0x0
Serial number of failed request: 860
Current serial number in output stream: 860
[Thread 0x7ffff687c700 (LWP 20241) exited]
[Thread 0x7ffff687dd80 (LWP 20237) exited]
[Inferior 1 (process 20237) exited with code 01]
No stack.

~ >>> cat dbus-monitor.log
signal time=1558933602.634153 sender=org.freedesktop.DBus -> destination=:1.189 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
string ":1.189"
signal time=1558933602.634229 sender=org.freedesktop.DBus -> destination=:1.189 serial=4 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameLost
string ":1.189"
method call time=1558933624.049123 sender=:1.196 -> destination=:1.190 serial=6 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=GetServerInformation
method call time=1558933624.049644 sender=:1.196 -> destination=:1.190 serial=7 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=GetServerInformation
method call time=1558933624.050965 sender=:1.196 -> destination=:1.190 serial=8 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=GetCapabilities
method call time=1558933737.376927 sender=:1.198 -> destination=:1.190 serial=6 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=GetServerInformation
method call time=1558933737.379590 sender=:1.198 -> destination=:1.190 serial=7 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=Notify
string "notify-send"
uint32 0
string ""
string "test"
string ""
array [
]
array [
dict entry(
string "urgency"
variant byte 2
)
]
int32 -1
signal time=1558933741.374485 sender=:1.190 -> destination=:1.198 serial=8 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=NotificationClosed
uint32 2
uint32 2
method call time=1558934014.629676 sender=:1.199 -> destination=:1.190 serial=6 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=GetServerInformation
method call time=1558934014.631900 sender=:1.199 -> destination=:1.190 serial=7 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=Notify
string "notify-send"
uint32 0
string ""
string "test"
string ""
array [
]
array [
dict entry(
string "urgency"
variant byte 2
)
]
int32 -1
signal time=1558934018.546214 sender=:1.190 -> destination=:1.199 serial=11 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=NotificationClosed
uint32 3
uint32 2

@deceptikon
Copy link
Author

Please let me know if I can assist in any other way

@tsipinakis
Copy link
Member

Unfortunately that log didn't give me anything. However, looking at the code it seems like the only place that can produce a BadValue error is the window positioning logic.

Can you build tsipinakis@232b550 with make debug (make sure to make clean first to re-build all the objects) and post the output after the crash?

Also, is this something you can reliably reproduce or does it happen sporadically?

@DragonGhost7
Copy link

I get the same error, but it happens each time i use pywal for some reason

@tsipinakis
Copy link
Member

tsipinakis commented May 30, 2019

@DragonGhost7 Can you try also try to get the debug print as I mentioned in the previous comment?
I'd also appreciate if you could run a bisect to figure out where it's coming from. I can't reproduce this myself to investigate further unfortunately.

@DragonGhost7
Copy link

Hello @tsipinakis , here are my debug log and and dbus-monitor output.

dbus-monitor.log
debug.log

I'm still not sure how to bisect it but I will be figuring out how to do it now.

@tsipinakis
Copy link
Member

Unfortunately that log doesn't say much. What I meant was compiling from tsipinakis@232b550 that adds some extra output in order to get information relevant to this.

In a nutshell:

git clone https://github.com/tsipinakis/dunst
cd dunst
git checkout debug-log
make debug
./dunst

And post the output when the crash happens, it should hopefully provide enough information to track this down.

Additionally doing a bisect would be amazing, you can use a comment I left in a previous issue as a guide on how to do that.

@DragonGhost7
Copy link

Hello @tsipinakis , your comment was rather helpfull.
Here is the bad commit.

bisect.log

@tsipinakis
Copy link
Member

Excuse the inactivity on this, real life caught up with me.

@DragonGhost7 Since you can reproduce this reliably as you said can you try to get a minimal pywal config that causes this so that I can reproduce this on my side as well?

@DragonGhost7
Copy link

Hello, while this time i realizes that the problem is in fact caused by xrdb.

@tsipinakis
Copy link
Member

tsipinakis commented Jun 18, 2019

I figured as much given that the commit the bisect pointed at is supposed to respond to xrdb calls. Could you be specific with what xrdb command you are running?

Additionally: What's the output of xrdbxprop -root -spy while running that command?

@DragonGhost7
Copy link

I use xrdb .Xdefaults and the output of xprop -root -spy is

GDK_VISUALS(INTEGER) = 256, 323
RESOURCE_MANAGER(STRING) = "*.color0:\t#1d2021\n*.color1:\t#cc241d\n*.color2:\t#98971a\n*.color3:\t#d79921\n*.color4:\t#458588\n*.color5:\t#b16286\n*.color6:\t#689d6a\n*.color7:\t#a89984\n*.color8:\t#928374\n*.color9:\t#fb4934\n*.color10:\t#b8bb26\n*.color11:\t#fabd2f\n*.color12:\t#83a598\n*.color13:\t#d3869b\n*.color14:\t#8ec07c\n*.color15:\t#ebdbb2\n"
ESETROOT_PMAP_ID(PIXMAP): pixmap id # 0x1400001
_XROOTPMAP_ID(PIXMAP): pixmap id # 0x1400001
_NET_ACTIVE_WINDOW(WINDOW): window id # 0xe00006
XFree86_DDC_EDID1_RAWDATA(INTEGER) = 0, -1, -1, -1, -1, -1, -1, 0, 48, -28, 109, 4, 0, 0, 0, 0, 0, 24, 1, 4, -107, 31, 17, 120, -22, -36, -107, -93, 88, 85, -96, 38, 13, 80, 84, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 54, -128, -96, 112, 56, 31, 64, 48, 32, 53, 0, 53, -82, 16, 0, 0, 26, 82, 43, -128, -96, 112, 56, 31, 64, 48, 32, 53, 0, 53, -82, 16, 0, 0, 26, 0, 0, 0, -2, 0, 82, 78, 57, 49, 78, -126, 49, 52, 48, 87, 70, 51, 10, 0, 0, 0, 0, 0, 0, 65, 49, -98, 0, 16, 0, 0, 10, 1, 10, 32, 32, 0, -26
_NET_DESKTOP_VIEWPORT(CARDINAL) = 0, 0, 0, 0, 0, 0
_NET_DESKTOP_NAMES(UTF8_STRING) = "1", "2", "4: "
_NET_NUMBER_OF_DESKTOPS(CARDINAL) = 3
_NET_CURRENT_DESKTOP(CARDINAL) = 0
I3_CONFIG_PATH(UTF8_STRING) = "/home/darkghost/.i3/config"
I3_PID(CARDINAL) = 602
I3_SOCKET_PATH(UTF8_STRING) = "/run/user/1000/i3/ipc-socket.602"
_NET_CLIENT_LIST(WINDOW): window id # 0xe00006, 0x1200003, 0x2a00006, 0x2e00006
_NET_CLIENT_LIST_STACKING(WINDOW): window id # 0x2a00006, 0x1200003, 0xe00006, 0x2e00006
_NET_SUPPORTED(ATOM) = _NET_SUPPORTED, _NET_SUPPORTING_WM_CHECK, _NET_WM_NAME, _NET_WM_VISIBLE_NAME, _NET_WM_MOVERESIZE, _NET_WM_STATE_STICKY, _NET_WM_STATE_FULLSCREEN, _NET_WM_STATE_DEMANDS_ATTENTION, _NET_WM_STATE_MODAL, _NET_WM_STATE_HIDDEN, _NET_WM_STATE_FOCUSED, _NET_WM_STATE, _NET_WM_WINDOW_TYPE, _NET_WM_WINDOW_TYPE_NORMAL, _NET_WM_WINDOW_TYPE_DOCK, _NET_WM_WINDOW_TYPE_DIALOG, _NET_WM_WINDOW_TYPE_UTILITY, _NET_WM_WINDOW_TYPE_TOOLBAR, _NET_WM_WINDOW_TYPE_SPLASH, _NET_WM_WINDOW_TYPE_MENU, _NET_WM_WINDOW_TYPE_DROPDOWN_MENU, _NET_WM_WINDOW_TYPE_POPUP_MENU, _NET_WM_WINDOW_TYPE_TOOLTIP, _NET_WM_WINDOW_TYPE_NOTIFICATION, _NET_WM_DESKTOP, _NET_WM_STRUT_PARTIAL, _NET_CLIENT_LIST, _NET_CLIENT_LIST_STACKING, _NET_CURRENT_DESKTOP, _NET_NUMBER_OF_DESKTOPS, _NET_DESKTOP_NAMES, _NET_DESKTOP_VIEWPORT, _NET_ACTIVE_WINDOW, _NET_CLOSE_WINDOW, _NET_MOVERESIZE_WINDOW
_NET_WM_NAME(UTF8_STRING) = "i3"
_NET_SUPPORTING_WM_CHECK(WINDOW): window id # 0x600063
_XKB_RULES_NAMES(STRING) = "evdev", "pc105,", "us,ca", "fr-legacy", "grp:rctrl_rshift_toggle"
XFree86_has_VT(INTEGER) = 1
XFree86_VT(INTEGER) = 1

@tsipinakis
Copy link
Member

tsipinakis commented Jun 18, 2019

The xprop output looks about what I'd expect. But at least we got a cause. I still can't reproduce this, xrdb works properly :/.

Can you clone https://github.com/tsipinakis/dunst and build from the debug-log branch and post the output(run with ./dunst -verbosity debug)? That should confirm if my earlier theory of the crash being in the window positioning logic is right.

@DragonGhost7
Copy link

I did, and here`s output

DEBUG: RUN
DEBUG: XEvent: Ignoring '65'
DEBUG: XEvent: Checking for active screen changes
DEBUG: XEvent: Checking for active screen changes
DEBUG: XEvent: Checking for active screen changes
DEBUG: XEvent: processing PropertyNotify for Resource manager
DEBUG: calc_window_pos: w: 350, h: 0, scr->x: 0, scr->y: 0, scr->w: 1920, scr->h: 1080, geom.x: -5, geom.y: 24
DEBUG: x_win_move: (x,y,w,h): 1565, 24, 350, 0
DEBUG: XEvent: Ignoring '22'
DEBUG: XEvent: Ignoring '22'
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  12 (X_ConfigureWindow)
  Value in failed request:  0x0
  Serial number of failed request:  117
  Current serial number in output stream:  117

@tsipinakis
Copy link
Member

h: 0

There it is, somewhere along the drawing chain we're getting a 0 on the window height.

I'll sign off for today, I'll add some more debug output to try to narrow this down further tomorrow.

Until then, have you tried using the default dunstrc rather than your own to see if it still happens?

@DragonGhost7
Copy link

Yes i just did, and there is no issue.

@tsipinakis
Copy link
Member

tsipinakis commented Jun 18, 2019

Oh, that's a bit hint can you post your dunstrc?

@DragonGhost7
Copy link

Here it is.
Also, if separator_height is changed from 0 to anything else, the issue also dissapears.

[global]
    ### Display ###

    # Which monitor should the notifications be displayed on.
    monitor = 0

    # Display notification on focused monitor.  Possible modes are:
    #   mouse: follow mouse pointer
    #   keyboard: follow window with keyboard focus
    #   none: don't follow anything
    #
    # "keyboard" needs a window manager that exports the
    # _NET_ACTIVE_WINDOW property.
    # This should be the case for almost all modern window managers.
    #
    # If this option is set to mouse or keyboard, the monitor option
    # will be ignored.
    follow = keyboard

    # The geometry of the window:
    #   [{width}]x{height}[+/-{x}+/-{y}]
    # The geometry of the message window.
    # The height is measured in number of notifications everything else
    # in pixels.  If the width is omitted but the height is given
    # ("-geometry x2"), the message window expands over the whole screen
    # (dmenu-like).  If width is 0, the window expands to the longest
    # message displayed.  A positive x is measured from the left, a
    # negative from the right side of the screen.  Y is measured from
    # the top and down respectively.
    # The width can be negative.  In this case the actual width is the
    # screen width minus the width defined in within the geometry option.
    geometry = "300x5-10+20"

    # Show how many messages are currently hidden (because of geometry).
    indicate_hidden = yes

    # Shrink window if it's smaller than the width.  Will be ignored if
    # width is 0.
    shrink = no

    # The transparency of the window.  Range: [0; 100].
    # This option will only work if a compositing window manager is
    # present (e.g. xcompmgr, compiz, etc.).
    transparency = 20

    # The height of the entire notification.  If the height is smaller
    # than the font height and padding combined, it will be raised
    # to the font height and padding.
    notification_height = 20

    # Draw a line of "separator_height" pixel height between two
    # notifications.
    # Set to 0 to disable.
    separator_height = 0

    # Padding between text and separator.
    padding = 8

    # Horizontal padding.
    horizontal_padding = 8

    # Defines width in pixels of frame around the notification window.
    # Set to 0 to disable.
    frame_width = 0

    # Defines color of the frame around the notification window.
    frame_color = "#aaaaaa"

    # Define a color for the separator.
    # possible values are:
    #  * auto: dunst tries to find a color fitting to the background;
    #  * foreground: use the same color as the foreground;
    #  * frame: use the same color as the frame;
    #  * anything else will be interpreted as a X color.
    separator_color = frame

    # Sort messages by urgency.
    sort = yes

    # Don't remove messages, if the user is idle (no mouse or keyboard input)
    # for longer than idle_threshold seconds.
    # Set to 0 to disable.
    # A client can set the 'transient' hint to bypass this. See the rules
    # section for how to disable this if necessary
    idle_threshold = 120

    ### Text ###

    font = Monospace 13

    # The spacing between lines.  If the height is smaller than the
    # font height, it will get raised to the font height.
    line_height = 0

    # Possible values are:
    # full: Allow a small subset of html markup in notifications:
    #        <b>bold</b>
    #        <i>italic</i>
    #        <s>strikethrough</s>
    #        <u>underline</u>
    #
    #        For a complete reference see
    #        <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
    #
    # strip: This setting is provided for compatibility with some broken
    #        clients that send markup even though it's not enabled on the
    #        server. Dunst will try to strip the markup but the parsing is
    #        simplistic so using this option outside of matching rules for
    #        specific applications *IS GREATLY DISCOURAGED*.
    #
    # no:    Disable markup parsing, incoming notifications will be treated as
    #        plain text. Dunst will not advertise that it has the body-markup
    #        capability if this is set as a global setting.
    #
    # It's important to note that markup inside the format option will be parsed
    # regardless of what this is set to.
    markup = full

    # The format of the message.  Possible variables are:
    #   %a  appname
    #   %s  summary
    #   %b  body
    #   %i  iconname (including its path)
    #   %I  iconname (without its path)
    #   %p  progress value if set ([  0%] to [100%]) or nothing
    #   %n  progress value if set without any extra characters
    #   %%  Literal %
    # Markup is allowed
    format = "<b>%s</b>\n%b"

    # Alignment of message text.
    # Possible values are "left", "center" and "right".
    alignment = center

    # Show age of message if message is older than show_age_threshold
    # seconds.
    # Set to -1 to disable.
    show_age_threshold = 60

    # Split notifications into multiple lines if they don't fit into
    # geometry.
    word_wrap = yes

    # When word_wrap is set to no, specify where to make an ellipsis in long lines.
    # Possible values are "start", "middle" and "end".
    ellipsize = middle

    # Ignore newlines '\n' in notifications.
    ignore_newline = no

    # Stack together notifications with the same content
    stack_duplicates = true

    # Hide the count of stacked notifications with the same content
    hide_duplicate_count = false

    # Display indicators for URLs (U) and actions (A).
    show_indicators = yes

    ### Icons ###

    # Align icons left/right/off
    icon_position = off

    # Scale larger icons down to this size, set to 0 to disable
    max_icon_size = 40

    # Paths to default icons.
    #icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/:/usr/share/icons/Adwaita/16x16/devices/:/usr/share/icons/Adwaita/16x16/status/

    ### History ###

    # Should a notification popped up from history be sticky or timeout
    # as if it would normally do.
    sticky_history = yes

    # Maximum amount of notifications kept in history
    history_length = 20

    ### Misc/Advanced ###

    # dmenu path.
    dmenu = /usr/bin/dmenu -p dunst:

    # Browser for opening urls in context menu.
    browser = /usr/bin/firefox -new-tab

    # Always run rule-defined scripts, even if the notification is suppressed
    always_run_script = true

    # Define the title of the windows spawned by dunst
    title = Dunst

    # Define the class of the windows spawned by dunst
    class = Dunst

    # Print a notification on startup.
    # This is mainly for error detection, since dbus (re-)starts dunst
    # automatically after a crash.
    startup_notification = false

    # Manage dunst's desire for talking
    # Can be one of the following values:
    #  crit: Critical features. Dunst aborts
    #  warn: Only non-fatal warnings
    #  mesg: Important Messages
    #  info: all unimportant stuff
    # debug: all less than unimportant stuff
    verbosity = mesg

    # Define the corner radius of the notification window
    # in pixel size. If the radius is 0, you have no rounded
    # corners.
    # The radius will be automatically lowered if it exceeds half of the
    # notification height to avoid clipping text and/or icons.
    corner_radius = 0

    ### Legacy

    # Use the Xinerama extension instead of RandR for multi-monitor support.
    # This setting is provided for compatibility with older nVidia drivers that
    # do not support RandR and using it on systems that support RandR is highly
    # discouraged.
    #
    # By enabling this setting dunst will not be able to detect when a monitor
    # is connected or disconnected which might break follow mode if the screen
    # layout changes.
    force_xinerama = false

    ### mouse

    # Defines action of mouse event
    # Possible values are:
    # * none: Don't do anything.
    # * do_action: If the notification has exactly one action, or one is marked as default,
    #              invoke it. If there are multiple and no default, open the context menu.
    # * close_current: Close current notification.
    # * close_all: Close all notifications.
    mouse_left_click = close_current
    mouse_middle_click = do_action
    mouse_right_click = close_all

# Experimental features that may or may not work correctly. Do not expect them
# to have a consistent behaviour across releases.
[experimental]
    # Calculate the dpi to use on a per-monitor basis.
    # If this setting is enabled the Xft.dpi value will be ignored and instead
    # dunst will attempt to calculate an appropriate dpi value for each monitor
    # using the resolution and physical size. This might be useful in setups
    # where there are multiple screens with very different dpi values.
    per_monitor_dpi = false

[shortcuts]

    # Shortcuts are specified as [modifier+][modifier+]...key
    # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
    # "mod3" and "mod4" (windows-key).
    # Xev might be helpful to find names for keys.

    # Close notification.
    close = ctrl+space

    # Close all notifications.
    close_all = ctrl+shift+space

    # Redisplay last message(s).
    # On the US keyboard layout "grave" is normally above TAB and left
    # of "1". Make sure this key actually exists on your keyboard layout,
    # e.g. check output of 'xmodmap -pke'
    history = ctrl+grave

    # Context menu.
    context = ctrl+shift+period

[urgency_low]
    # IMPORTANT: colors have to be defined in quotation marks.
    # Otherwise the "#" and following would be interpreted as a comment.
    background = "#222222"
    foreground = "#ffffff"
    timeout = 10
    # Icon for notifications with low urgency, uncomment to enable
    #icon = /path/to/icon

[urgency_normal]
    background = "#285577"
    foreground = "#ffffff"
    timeout = 10
    # Icon for notifications with normal urgency, uncomment to enable
    #icon = /path/to/icon

[urgency_critical]
    background = "#900000"
    foreground = "#ffffff"
    frame_color = "#ff0000"
    timeout = 0
    # Icon for notifications with critical urgency, uncomment to enable
    #icon = /path/to/icon

[notify-send]
    appname = notify-send
    urgency = critical

# Every section that isn't one of the above is interpreted as a rules to
# override settings for certain messages.
#
# Messages can be matched by
#    appname (discouraged, see desktop_entry)
#    body
#    category
#    desktop_entry
#    icon
#    match_transient
#    msg_urgency
#    stack_tag
#    summary
#
# and you can override the
#    background
#    foreground
#    format
#    frame_color
#    fullscreen
#    new_icon
#    set_stack_tag
#    set_transient
#    timeout
#    urgency
#
# Shell-like globbing will get expanded.
#
# Instead of the appname filter, it's recommended to use the desktop_entry filter.
# GLib based applications export their desktop-entry name. In comparison to the appname,
# the desktop-entry won't get localized.
#
# SCRIPTING
# You can specify a script that gets run when the rule matches by
# setting the "script" option.
# The script will be called as follows:
#   script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: if you don't want a notification to be displayed, set the format
# to "".
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.

# Disable the transient hint so that idle_threshold cannot be bypassed from the
# client
#[transient_disable]
#    match_transient = yes
#    set_transient = no
#
# Make the handling of transient notifications more strict by making them not
# be placed in history.
#[transient_history_ignore]
#    match_transient = yes
#    history_ignore = yes

# fullscreen values
# show: show the notifications, regardless if there is a fullscreen window opened
# delay: displays the new notification, if there is no fullscreen window active
#        If the notification is already drawn, it won't get undrawn.
# pushback: same as delay, but when switching into fullscreen, the notification will get
#           withdrawn from screen again and will get delayed like a new notification
#[fullscreen_delay_everything]
#    fullscreen = delay
#[fullscreen_show_critical]
#    msg_urgency = critical
#    fullscreen = show

#[espeak]
#    summary = "*"
#    script = dunst_espeak.sh

#[script-test]
#    summary = "*script*"
#    script = dunst_test.sh

#[ignore]
#    # This notification will not be displayed
#    summary = "foobar"
#    format = ""

#[history-ignore]
#    # This notification will not be saved in history
#    summary = "foobar"
#    history_ignore = yes

#[skip-display]
#    # This notification will not be displayed, but will be included in the history
#    summary = "foobar"
#    skip_display = yes

#[signed_on]
#    appname = Pidgin
#    summary = "*signed on*"
#    urgency = low
#
#[signed_off]
#    appname = Pidgin
#    summary = *signed off*
#    urgency = low
#
#[says]
#    appname = Pidgin
#    summary = *says*
#    urgency = critical
#
#[twitter]
#    appname = Pidgin
#    summary = *twitter.com*
#    urgency = normal
#
#[stack-volumes]
#    appname = "some_volume_notifiers"
#    set_stack_tag = "volume"
#
# vim: ft=cfg

@tsipinakis tsipinakis added this to the 1.4.1 milestone Jun 18, 2019
@tsipinakis
Copy link
Member

Reproduced, I'll look more into this tomorrow.

@DragonGhost7
Copy link

Thanks a lot !

tsipinakis added a commit to tsipinakis/dunst that referenced this issue Jun 19, 2019
Draw should not be called when there are no notifications in the queue.
This for unknown reasons causes a crash the next time we attempt to get
the currently active window with a BadValue error from
XGetWindowProperty.

Fixes dunst-project#630.
@tsipinakis
Copy link
Member

tsipinakis commented Jun 19, 2019

Weirdly the crash isn't inside draw() as I expected, it crashes inside get_focused_window() after a call to draw with no available notifications. I have no clue why but fixing that call seems to do it.

@DragonGhost7 Can you build tsipinakis@69a682c, confirm this fixes the issue?

@DragonGhost7
Copy link

Build functional, issue has disappeared. xrdb command doesnt crash it anymore.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants