** Description changed:

  Please consider backporting
  https://gitlab.gnome.org/GNOME/glib/-/commit/7e30869 to Ubuntu 24.04
  glib2
  
  I finally tracked down why evolution (with EWS backend in my case) ends
- up with a bunch of livelocked jobs making no forward progress when it
+ up with a bunch of deadlocked jobs making no forward progress when it
  tries to refresh too many folders at once.
  
  It boils down to evo exhausing glib2's GTask pool, and the underlying
  GTask watchdog for growing the pool not working properly. The above
  upstream commit fixes the latter.
  
  Here's a more detailed description from my artifical buddy:
  
  Evolution's mail sync jobs can occupy every thread in GIO's shared GTask
  pool while blocked on a common connection lock; the lock holder then
  performs a synchronous TLS handshake (glib-networking's
  g_tls_connection_base_handshake()), whose handshake worker is itself
  queued as a GTask on that same exhausted pool — and because gtask.c's
  pool-growing watchdog is left disarmed at that point (glib 2.80's
  g_task_thread_cleanup() shrinks the pool's max threads on every
  completion and nothing re-arms the watchdog when a task is merely
  queued), the handshake task never runs, deadlocking the account
  permanently; fixed upstream by commit 7e30869 ("gtask: fix
  g_task_run_in_thread", issue #3840), which keeps one thread of headroom,
  but that fix is absent from the glib-2-80 series shipped in noble.
  
  ProblemType: Bug
  DistroRelease: Ubuntu 24.04
  Package: libglib2.0-0t64 2.80.0-6ubuntu3.8
  ProcVersionSignature: Ubuntu 7.0.0-28.28~24.04.1-generic 7.0.12
  Uname: Linux 7.0.0-28-generic x86_64
  ApportVersion: 2.28.3-0ubuntu0.1
  Architecture: amd64
  CasperMD5CheckResult: unknown
  CurrentDesktop: ubuntu:GNOME
  Date: Mon Aug 31 14:44:13 2026
  ProcEnviron:
   LANG=en_US.UTF-8
   PATH=(custom, no user)
   SHELL=/bin/bash
   TERM=xterm-256color
   XDG_RUNTIME_DIR=<set>
  RebootRequiredPkgs: Error: path contained symlinks.
  SourcePackage: glib2.0
  UpgradeStatus: No upgrade log present (probably fresh install)
  
  Here's the SRU template:
  
  [Impact]
  * Evolution livelocks trying to perform too many tasks at once. This bug 
probably affects a number of other glib users.
  * This is causing significant headaches for corporate users of evo with 
evolution-ews
  
  [Test Plan]
  * It can generally be reproduced by triggering enough simultanous tasks in 
evolution but it's difficult to provide step-by-step instructions. i have 
attached an AI generated reproducer however that reproduces the same condition.
  * The patch is upstream. It fixes the problem by ensuring that at least one 
spare GTask is always available.
  
  [Where problems could occur]
  * I can't think of anything
  * The patch modifies the localized cleanup path of a gtask in a rather 
straightforward way and has been upstream in glib2 for almost a year now.
  
  [Other Info]
  * Upstream: https://gitlab.gnome.org/GNOME/glib/-/commit/7e30869

-- 
You received this bug notification because you are a member of Ubuntu
Desktop Bugs, which is subscribed to glib2.0 in Ubuntu.
https://bugs.launchpad.net/bugs/2165869

Title:
  glib2 GTask bug causes livelocks in Evolution (and others)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/glib2.0/+bug/2165869/+subscriptions


-- 
desktop-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/desktop-bugs

Reply via email to