Dunst crashes when displaying notifications containing Chinese characters
Hi Dunst maintainers, I've encountered a critical issue where Dunst crashes whenever it attempts to display a notification that contains Chinese characters. This behavior is consistently reproducible.
Problem Description:
Dunst crashes immediately when a notification containing any Chinese character is pushed to it.
Steps to Reproduce:
- Ensure Dunst is running.
- Send a notification to Dunst that includes Chinese characters. For example, using or any application that sends notifications with Chinese text.notify-send "你好世界"
Expected Behavior:
Dunst should correctly display notifications containing Chinese characters without crashing.
Actual Behavior:
Dunst crashes as soon as a notification with Chinese characters is received, leading to a complete failure of the notification system.
Analysis and Troubleshooting Performed:
Through testing, I've isolated the issue to the presence of Chinese characters within the notification content. Notifications without Chinese characters are displayed correctly.
Additional Information:
- Dunst Version: 1.12.2-1
- Operating System: Arch Linux
- Window Manager: Hyprland+HyDE
- Locale settings: zh_CN.UTF-8
- Example command that causes crash: notify-send "测试中文"
Temporary solution:
dunst that downgrading pango fixes it. Tried the version that works fine: v1.56.3
For more details, please see: https://github.com/HyDE-Project/HyDE/issues/905
This issue significantly impacts usability for users who receive notifications in Chinese. Any help in diagnosing and resolving this would be greatly appreciated. Thank you!
Hello does this affect every chinese character? We rely on pango to do our character rendering so maybe the problem is indeed of pango. I will look into it
Hello does this affect every chinese character? We rely on pango to do our character rendering so maybe the problem is indeed of pango. I will look into it
Yes, as long as the content includes any Chinese characters, it will cause a crash (at least in my test)
Hello does this affect every chinese character? We rely on pango to do our character rendering so maybe the problem is indeed of pango. I will look into it
Yes, as long as the content includes any Chinese characters, it will cause a crash (at least in my test)
Does this affect also other cjk characters or some utf8 other characters in general? Also does this affect only the notification body or also the summary?
Does this affect also other cjk characters or some utf8 other characters in general? Also does this affect only the notification body or also the summary?
Sorry, I don't know. Regarding further testing: Since I've resolved my immediate issue by downgrading pango on my production system, I'm hesitant to reintroduce potential instability by changing versions again to replicate the problem. This is my primary work environment, and stability is critical for me. I don't currently have a dedicated non-production setup readily available for this kind of debugging.
To help move this forward, perhaps you could try reproducing it using online tools or test strings containing similar Japanese characters (or other CJK/UTF-8 sequences you want to test)? Examples like "日本語の通知" or "メッセージ".
Hi! I created test script and ask AI to make me dictionary because I don't use CJK/UTF-8.
Also, I added safe characters in between that don't crash dunst to see if it still works.
Signal 1 is when dunst don't start may because system launches it so I added retries.
signal 11 - segfaults
Test Log
python /tmp/test_dunst.py
🧪 Starting dunst CJK Character Crash Test (Issue #1493)
============================================================
☠️ Killed existing dunst processes
⚠️ dunst failed to start (exit code 0)
🔄 Retry 1/5
☠️ Killed existing dunst processes
⚠️ dunst failed to start (exit code 1)
🔄 Retry 2/5
☠️ Killed existing dunst processes
⚠️ dunst failed to start (exit code 1)
🔄 Retry 3/5
☠️ Killed existing dunst processes
🚀 Started dunst -verbosity crit (PID 1375255)
� Testing category: ASCII_Safe
📨 Testing: 'Hello'
✅ PASS
📨 Testing: 'Test'
✅ PASS
� Testing category: Chinese_Basic
📨 Testing: '测试'
💥 CRASH: dunst killed by signal 11 with text: '测试'
🚀 Started dunst -verbosity crit (PID 1376207)
📨 Testing: '你好'
💥 CRASH: dunst killed by signal 11 with text: '你好'
🚀 Started dunst -verbosity crit (PID 1376463)
� Testing category: ASCII_Check_1
📨 Testing: 'OK-1'
✅ PASS
� Testing category: Chinese_Traditional
📨 Testing: '繁體字'
💥 CRASH: dunst killed by signal 11 with text: '繁體字'
🚀 Started dunst -verbosity crit (PID 1376969)
📨 Testing: '測試'
💥 CRASH: dunst killed by signal 11 with text: '測試'
🚀 Started dunst -verbosity crit (PID 1377206)
� Testing category: ASCII_Check_2
📨 Testing: 'OK-2'
✅ PASS
� Testing category: Chinese_Complex
📨 Testing: '𠀀𠀁𠀂𠀃'
💥 CRASH: dunst killed by signal 11 with text: '𠀀𠀁𠀂𠀃'
🚀 Started dunst -verbosity crit (PID 1377751)
📨 Testing: '𡈽𡉀'
💥 CRASH: dunst killed by signal 11 with text: '𡈽𡉀'
🚀 Started dunst -verbosity crit (PID 1377959)
� Testing category: ASCII_Check_3
📨 Testing: 'OK-3'
✅ PASS
� Testing category: Japanese_Basic
📨 Testing: '日本語'
💥 CRASH: dunst killed by signal 11 with text: '日本語'
🚀 Started dunst -verbosity crit (PID 1378506)
📨 Testing: '通知'
💥 CRASH: dunst killed by signal 11 with text: '通知'
🚀 Started dunst -verbosity crit (PID 1378727)
� Testing category: ASCII_Check_4
📨 Testing: 'OK-4'
✅ PASS
� Testing category: Japanese_Complex
📨 Testing: '𠮟る'
💥 CRASH: dunst killed by signal 11 with text: '𠮟る'
🚀 Started dunst -verbosity crit (PID 1379268)
📨 Testing: '𠮟咤'
💥 CRASH: dunst killed by signal 11 with text: '𠮟咤'
🚀 Started dunst -verbosity crit (PID 1379476)
� Testing category: ASCII_Check_5
📨 Testing: 'OK-5'
✅ PASS
� Testing category: Korean_Basic
📨 Testing: '안녕하세요'
💥 CRASH: dunst killed by signal 11 with text: '안녕하세요'
🚀 Started dunst -verbosity crit (PID 1380031)
📨 Testing: '알림'
💥 CRASH: dunst killed by signal 11 with text: '알림'
🚀 Started dunst -verbosity crit (PID 1380237)
� Testing category: ASCII_Check_6
📨 Testing: 'OK-6'
✅ PASS
� Testing category: Korean_Complex
📨 Testing: '𠂢𠂣𠂤'
💥 CRASH: dunst killed by signal 11 with text: '𠂢𠂣𠂤'
🚀 Started dunst -verbosity crit (PID 1380835)
📨 Testing: '𠅱𠅲𠅳'
💥 CRASH: dunst killed by signal 11 with text: '𠅱𠅲𠅳'
🚀 Started dunst -verbosity crit (PID 1381069)
� Testing category: ASCII_Check_7
📨 Testing: 'OK-7'
✅ PASS
� Testing category: Mixed_CJK
📨 Testing: '中文日本語한글'
💥 CRASH: dunst killed by signal 11 with text: '中文日本語한글'
🚀 Started dunst -verbosity crit (PID 1381757)
📨 Testing: '测试テスト테스트'
💥 CRASH: dunst killed by signal 11 with text: '测试テスト테스트'
🚀 Started dunst -verbosity crit (PID 1381883)
� Testing category: ASCII_Check_8
📨 Testing: 'OK-8'
✅ PASS
� Testing category: UTF8_Extended
📨 Testing: '𓀀'
💥 CRASH: dunst killed by signal 11 with text: '𓀀'
🚀 Started dunst -verbosity crit (PID 1382522)
📨 Testing: '𓀁'
💥 CRASH: dunst killed by signal 11 with text: '𓀁'
🚀 Started dunst -verbosity crit (PID 1382670)
� Testing category: ASCII_Check_9
📨 Testing: 'OK-9'
✅ PASS
� Testing category: Emoji
📨 Testing: '😊'
✅ PASS
📨 Testing: '🚀'
✅ PASS
� Testing category: ASCII_Check_10
📨 Testing: 'OK-10'
✅ PASS
� Testing category: Symbols
📨 Testing: '§'
✅ PASS
📨 Testing: '¶'
✅ PASS
� Testing category: ASCII_Check_11
📨 Testing: 'OK-11'
✅ PASS
� Testing category: Math
📨 Testing: '∑'
✅ PASS
📨 Testing: '∫'
✅ PASS
� Testing category: ASCII_Check_12
📨 Testing: 'OK-12'
✅ PASS
� Testing category: Latin_Diacritics
📨 Testing: 'ñoño'
✅ PASS
📨 Testing: 'café'
✅ PASS
� Testing category: ASCII_Check_13
📨 Testing: 'OK-13'
✅ PASS
� Testing category: Latin_Extended
📨 Testing: 'résumé'
✅ PASS
📨 Testing: 'naïve'
✅ PASS
� Testing category: ASCII_Check_14
📨 Testing: 'OK-14'
✅ PASS
� Testing category: Arabic_Basic
📨 Testing: 'السلام'
💥 CRASH: dunst killed by signal 11 with text: 'السلام'
🚀 Started dunst -verbosity crit (PID 1389456)
📨 Testing: 'مرحبا'
💥 CRASH: dunst killed by signal 11 with text: 'مرحبا'
🚀 Started dunst -verbosity crit (PID 1389603)
� Testing category: ASCII_Check_15
📨 Testing: 'OK-15'
✅ PASS
� Testing category: Arabic_Ligatures
📨 Testing: 'ﷲ'
💥 CRASH: dunst killed by signal 11 with text: 'ﷲ'
⚠️ dunst failed to start (exit code 1)
🔄 Retry 1/5
☠️ Killed existing dunst processes
⚠️ dunst failed to start (exit code 1)
🔄 Retry 2/5
☠️ Killed existing dunst processes
⚠️ dunst failed to start (exit code 1)
🔄 Retry 3/5
☠️ Killed existing dunst processes
⚠️ dunst failed to start (exit code 1)
🔄 Retry 4/5
☠️ Killed existing dunst processes
⚠️ dunst failed to start (exit code 1)
🔄 Retry 5/5
📨 Testing: 'ﷺ'
⚠️ dunst was already dead, restarting...
⚠️ dunst failed to start (exit code 1)
❌ Failed to restart dunst, skipping remaining tests
� Testing category: ASCII_Check_Final
📨 Testing: 'Final-Check'
⚠️ dunst was already dead, restarting...
⚠️ dunst failed to start (exit code 1)
❌ Failed to restart dunst, skipping remaining tests
============================================================
📊 RESULTS
Total Tests: 50
Crashes: 21
Success Rate: 58.0%
💥 This Crashes dunst:
- Chinese_Basic: '测试' (killed by signal 11)
- Chinese_Basic: '你好' (killed by signal 11)
- Chinese_Traditional: '繁體字' (killed by signal 11)
- Chinese_Traditional: '測試' (killed by signal 11)
- Chinese_Complex: '𠀀𠀁𠀂𠀃' (killed by signal 11)
- Chinese_Complex: '𡈽𡉀' (killed by signal 11)
- Japanese_Basic: '日本語' (killed by signal 11)
- Japanese_Basic: '通知' (killed by signal 11)
- Japanese_Complex: '𠮟る' (killed by signal 11)
- Japanese_Complex: '𠮟咤' (killed by signal 11)
- Korean_Basic: '안녕하세요' (killed by signal 11)
- Korean_Basic: '알림' (killed by signal 11)
- Korean_Complex: '𠂢𠂣𠂤' (killed by signal 11)
- Korean_Complex: '𠅱𠅲𠅳' (killed by signal 11)
- Mixed_CJK: '中文日本語한글' (killed by signal 11)
- Mixed_CJK: '测试テスト테스트' (killed by signal 11)
- UTF8_Extended: '𓀀' (killed by signal 11)
- UTF8_Extended: '𓀁' (killed by signal 11)
- Arabic_Basic: 'السلام' (killed by signal 11)
- Arabic_Basic: 'مرحبا' (killed by signal 11)
- Arabic_Ligatures: 'ﷲ' (killed by signal 11)
🏁 Test completed.
Here's the test chars
Test Characters
TEST_CHARS = {
# Control group - ASCII only (start with safe test)
"ASCII_Safe": ["Hello", "Test"],
# Issue #1493: Chinese characters that cause crashes
"Chinese_Basic": ["测试", "你好"],
"ASCII_Check_1": ["OK-1"], # Safety check between suspicious categories
"Chinese_Traditional": ["繁體字", "測試"],
"ASCII_Check_2": ["OK-2"], # Safety check
"Chinese_Complex": ["𠀀𠀁𠀂𠀃", "𡈽𡉀"],
"ASCII_Check_3": ["OK-3"], # Safety check
# Extended CJK testing based on issue comments
"Japanese_Basic": ["日本語", "通知"],
"ASCII_Check_4": ["OK-4"], # Safety check
"Japanese_Complex": ["𠮟る", "𠮟咤"],
"ASCII_Check_5": ["OK-5"], # Safety check
"Korean_Basic": ["안녕하세요", "알림"],
"ASCII_Check_6": ["OK-6"], # Safety check
"Korean_Complex": ["𠂢𠂣𠂤", "𠅱𠅲𠅳"],
"ASCII_Check_7": ["OK-7"], # Safety check
# Mixed CJK content
"Mixed_CJK": ["中文日本語한글", "测试テスト테스트"],
"ASCII_Check_8": ["OK-8"], # Safety check
# Edge cases and problematic sequences
"UTF8_Extended": ["𓀀", "𓀁"],
"ASCII_Check_9": ["OK-9"], # Safety check
"Emoji": ["😊", "🚀"],
"ASCII_Check_10": ["OK-10"], # Safety check
"Symbols": ["§", "¶"],
"ASCII_Check_11": ["OK-11"], # Safety check
"Math": ["∑", "∫"],
"ASCII_Check_12": ["OK-12"], # Safety check
# Latin with diacritics and special characters
"Latin_Diacritics": ["ñoño", "café"],
"ASCII_Check_13": ["OK-13"], # Safety check
"Latin_Extended": ["résumé", "naïve"],
"ASCII_Check_14": ["OK-14"], # Safety check
# Arabic/Islamic script with ligatures
"Arabic_Basic": ["السلام", "مرحبا"],
"ASCII_Check_15": ["OK-15"], # Safety check
"Arabic_Ligatures": ["ﷲ", "ﷺ"],
"ASCII_Check_Final": ["Final-Check"], # Final safety check
}
swaync is fine, but it doesn't depend on pango (or maybe gtk works under the hood)
It is also worth noting that fontconfig as deps of pango give this warning on dunst and rofi too.
from dunst
Fontconfig warning: using without calling FcInit()
from rofi
Fontconfig warning: using without calling FcInit()
Thank you for the tests. Where did you find the fontconfig warning?
Maybe new version of pango added some initialization function that we missed
Where did you find the fontconfig warning?
Maybe new version of pango added some initialization function that we missed
Just the stdout for every time we use rofi, for dunst randomly outputs that too.
In arch repo, pango and fontconfig updated the same day 2025-06-27 introducing this bug.
Where did you find the fontconfig warning?
Maybe new version of pango added some initialization function that we missed
Just the stdout for every time we use
rofi, for dunst randomly outputs that too.In arch repo,
pangoandfontconfigupdated the same day 2025-06-27 introducing this bug.
Thanks for pointing this out. The hints seem to point to a change in pango/fontconfig behavior
my laptop has pango-1.56.3_2 and I can't reproduce this crash. I will try to update pango and do more testing myself
https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/444
I found this and I think it is related.
The problem might be the fontconfig cache.
Try to run fc-cache -r (https://gitlab.archlinux.org/archlinux/packaging/packages/pango/-/issues/1#note_237145)
Try to run fc-cache -r (https://gitlab.archlinux.org/archlinux/packaging/packages/pango/-/issues/1#note_237145)
Still crashing
my laptop has pango-1.56.3_2 and I can't reproduce this crash. I
regression is on the latest pango (in arch). Is dunst build against an older pango version?
dunst is dynamically compiled
...
libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0x00007f6d4e147000)
libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0x00007f6d4e0d8000)
....
from what I read from the pr about this problem this does seem to be a change in pango, but only regarding fontconfig. dunst does not have anything to do with it
dunst is dynamically compiled
But in arch repository dunst requires pango so maybe it is linked to that newer version of pango that might potentially have the issue? Maybe this is a distro specific issue?.
dunst is dynamically compiled
But in arch repository dunst requires
pangoso maybe it is linked to that newer version of pango that might potentially have the issue? Maybe this is a distro specific issue?.
yes dunst relies on pango. I am not sure about how arch is handling this problem, but this is the official issue: https://gitlab.archlinux.org/archlinux/packaging/packages/pango/-/issues/1#note_237145
Hi @bynect https://github.com/HyDE-Project/HyDE/issues/1131 figured out we need to add a fallback font to not make it crash. According to dunst manpage it fallsback to monospace right that is why we only add one font entry.
We fix the config in our dotfiles repo, but shouldn't dunst crash?
thank you!
Hi @bynect https://github.com/HyDE-Project/HyDE/issues/1131 figured out we need to add a fallback font to not make it crash. According to dunst manpage it fallsback to monospace right that is why we only add one font entry.
We fix the config in our dotfiles repo, but shouldn't dunst crash?
![]()
thank you!
Actually the default font for dunst should depend on pango default. On most system pango uses fontconfig file for default font. And i think that those default fonts don't support cjk. So it is sensible for people wanting proper cjk support to set up their own font. I'm not sure about the nerd font you said but maybe they don't have full cjk support?
@bynect the 1st font crashes, Having the 2nd font as fallback fixes it.
This Issue should be resolved @mcxiaochenn
closing as this is not directly related to dunst and distributions should have solved this