I first tried to reproduce the problem using gnome-shell 3.28.4-0ubuntu18.04.3 from -updates.
I have tried the following in both KVM and on physical hardware of a Lenovo Thinkpad X1 Laptop.
I installed the "TeaTime" gnome-shell extension version 28 from https://extensions.gnome.org/extension/604/teatime/ and used it to send multiple notifications that arrive in 5 second delays. The hang never occured.
I tried creating a draft email in evolution as suggested in https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/470, and ctrl-clicked the link to spawn firefox with a notification. I did this several times, no hangs. I then tried the calendar feature in Evolution to send a notification on a new event in 5 minutes time. I did this multiple times, and never got any hangs. https://bugzilla.redhat.com/show_bug.cgi?id=1575281
I installed the gsconnect gnome-shell extension https://extensions.gnome.org/extension/1319/gsconnect/ and paired it to my android phone running the kdeconnect app.
In the settings menu on the android app, there is a "send ping" button. Press that and a notification is spawned in gnome-shell. I clicked this many times, and tried clearing notifications and being in various apps, or trying to race notifications and still could not get a hang.
Reading the commits, the gnome-shell hang is caused by fsync() being called from a main thread on persistent gnome-shell state files. I found the gnome-shell pid, and attached strace like so:
$ sudo strace -e fsync -p <PID>
On 3.28.4-0ubuntu18.04.3 each time I pressed "Send Ping" from kdeconnect, a line is printed with:
fsync(38) 0
suggesting that fsync is called every time a notification comes in.
I then enabled -proposed and installed gnome-shell 3.28.4-0ubuntu18.04.7
I retried all my initial tests, and everything worked and did not hang.
When it came to running strace against gnome-shell to view fsync calls, I noticed that fsync was no longer being called each time I pressed "Send Ping", meaning it is no longer happening per notification arrival. I clicked the clock icon to see all notifications, and a large amount of fsync calls appeared in strace output all at once, suggesting that they were put on pause and batched all at once.
I can see the behaviour change that 86a00b6 and 19e0840 has had on fsync behaviour, so the commits are doing what they say.
In my testing, I did not see any harm caused by these commits, as notifications still arrived as usual.
Again, I could not reproduce the original report of a 20 second hang, but the new package in -proposed appears to do no harm from the testing I have undertaken.
I talked to Marco about this bug, and we agreed it is okay to mark as verified. So, with some hesitation, I will mark this bug as verified.
Performing verification for Bionic.
I want to say straight up, I haven't been able to reproduce the problem, I have tried many mechanisms, but I can not reproduce the 20 second shell hang and crash, as documented in https:/ /github. com/GSConnect/ gnome-shell- extension- gsconnect/ issues/ 549#issuecommen t-515679156
I first tried to reproduce the problem using gnome-shell 3.28.4- 0ubuntu18. 04.3 from -updates.
I have tried the following in both KVM and on physical hardware of a Lenovo Thinkpad X1 Laptop.
I installed the "TeaTime" gnome-shell extension version 28 from https:/ /extensions. gnome.org/ extension/ 604/teatime/ and used it to send multiple notifications that arrive in 5 second delays. The hang never occured.
I tried creating a draft email in evolution as suggested in https:/ /gitlab. gnome.org/ GNOME/gnome- shell/- /issues/ 470, and ctrl-clicked the link to spawn firefox with a notification. I did this several times, no hangs. I then tried the calendar feature in Evolution to send a notification on a new event in 5 minutes time. I did this multiple times, and never got any hangs. https:/ /bugzilla. redhat. com/show_ bug.cgi? id=1575281
I installed the gsconnect gnome-shell extension https:/ /extensions. gnome.org/ extension/ 1319/gsconnect/ and paired it to my android phone running the kdeconnect app.
In the settings menu on the android app, there is a "send ping" button. Press that and a notification is spawned in gnome-shell. I clicked this many times, and tried clearing notifications and being in various apps, or trying to race notifications and still could not get a hang.
Reading the commits, the gnome-shell hang is caused by fsync() being called from a main thread on persistent gnome-shell state files. I found the gnome-shell pid, and attached strace like so:
$ sudo strace -e fsync -p <PID>
On 3.28.4- 0ubuntu18. 04.3 each time I pressed "Send Ping" from kdeconnect, a line is printed with:
fsync(38) 0
suggesting that fsync is called every time a notification comes in.
I then enabled -proposed and installed gnome-shell 3.28.4- 0ubuntu18. 04.7
I retried all my initial tests, and everything worked and did not hang.
When it came to running strace against gnome-shell to view fsync calls, I noticed that fsync was no longer being called each time I pressed "Send Ping", meaning it is no longer happening per notification arrival. I clicked the clock icon to see all notifications, and a large amount of fsync calls appeared in strace output all at once, suggesting that they were put on pause and batched all at once.
I can see the behaviour change that 86a00b6 and 19e0840 has had on fsync behaviour, so the commits are doing what they say.
In my testing, I did not see any harm caused by these commits, as notifications still arrived as usual.
Again, I could not reproduce the original report of a 20 second hang, but the new package in -proposed appears to do no harm from the testing I have undertaken.
I talked to Marco about this bug, and we agreed it is okay to mark as verified. So, with some hesitation, I will mark this bug as verified.