Bug 83297 - weston-terminal: exits under intensive terminal output
Summary: weston-terminal: exits under intensive terminal output
Status: RESOLVED FIXED
Alias: None
Product: Wayland
Classification: Unclassified
Component: weston (show other bugs)
Version: 1.5.0
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Wayland bug list
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-08-31 15:21 UTC by Remi Denis-Courmont
Modified: 2014-09-15 08:27 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Description Remi Denis-Courmont 2014-08-31 15:21:09 UTC
While the virtual terminal underneath weston-terminal wants to output a lot of data really fast, the terminal process may pseudo-randomly exit abruptly.

When this happens, the Weston error console will show something like:

| Error sending request: Resource temporarily unavailable
| child 7795 exited

On my system, this happens about one in two/tree times running "ls -lR /", but I initially observed the problem with "vlc -vv".

Given the error message, I assume that the Wayland display socket has its kernel-level buffers saturated in the client-to-server direction, and libwayland-client exits instead of gracefully handling the transient error due to non-blocking mode. This is however merely a conjecture.


This bug was originally reported as Debian #760043.
Comment 1 Remi Denis-Courmont 2014-09-02 18:45:00 UTC
Weston server logs are not particularly interesting:

...
[2075835.913] xdg_surface@19.set_transient_for(nil)
[2075835.918] xdg_surface@19.set_margin(32, 32, 32, 32)
[2075835.940] xdg_surface@19.set_transient_for(nil)
[2075835.946] xdg_surface@19.set_margin(32, 32, 32, 32)
[2075835.957] xdg_surface@19.set_transient_for(nil)
[2075835.962] xdg_surface@19.set_margin(32, 32, 32, 32)
[2075835.974] xdg_surface@19.set_transient_for(nil)
[2075835.979] xdg_surface@19.set_margin(32, 32, 32, 32)
[2075835.993] xdg_surface@19.set_transient_for(nil)
[2075835.998] xdg_surface@19.set_margin(32, 32, 32, 32)
[2075836.010] xdg_surface@19.set_transient_for(nil)
[2075836.015] xdg_surface@19.set_margin(32, 32, 32, 32)
[2075836.026] xdg_surface@19.set_transient_for(nil)
[2075836.031] xdg_surface@19.set_margin(32, 32, 32, 32)
[2075836.043] xdg_surface@19.set_transient_for(nil)
[2075836.048] xdg_surface@19.set_margin(32, 32, 32, 32)
[2075836.060] xdg_surface@19.set_transient_for(nil)
[2075836.065] xdg_surface@19.set_margin(32, 32, 32, 32)
[2075836.086] xdg_surface@19.set_transient_for(nil)
[2075836.091] xdg_surface@19.set_margin(32, 32, 32, 32)
[2075836.103] xdg_surface@19.set_transient_for(nil)
child 9223 exited


And the client debugs logs are pretty much as boring:

(...)
[2169794,437]  -> xdg_surface@19.set_transient_for(nil)
[2169794,443]  -> xdg_surface@19.set_margin(32, 32, 32, 32)
[2169794,470]  -> xdg_surface@19.set_transient_for(nil)
[2169794,477]  -> xdg_surface@19.set_margin(32, 32, 32, 32)
[2169794,504]  -> xdg_surface@19.set_transient_for(nil)
[2169794,510]  -> xdg_surface@19.set_margin(32, 32, 32, 32)
[2169794,538]  -> xdg_surface@19.set_transient_for(nil)
[2169794,544]  -> xdg_surface@19.set_margin(32, 32, 32, 32)
[2169794,571]  -> xdg_surface@19.set_transient_for(nil)
[2169794,577]  -> xdg_surface@19.set_margin(32, 32, 32, 32)
[2169794,605]  -> xdg_surface@19.set_transient_for(nil)
[2169794,611]  -> xdg_surface@19.set_margin(32, 32, 32, 32)
[2169794,638]  -> xdg_surface@19.set_transient_for(nil)
[2169794,644]  -> xdg_surface@19.set_margin(32, 32, 32, 32)
[2169794,671]  -> xdg_surface@19.set_transient_for(nil)
[2169794,677]  -> xdg_surface@19.set_margin(32, 32, 32, 32)
[2169794,705]  -> xdg_surface@19.set_transient_for(nil)
[2169794,711]  -> xdg_surface@19.set_margin(32, 32, 32, 32)
[2169794,738]  -> xdg_surface@19.set_transient_for(nil)
[2169794,744]  -> xdg_surface@19.set_margin(32, 32, 32, 32)
Error sending request: Ressource temporairement non disponible
child 9290 exited
Comment 2 Pekka Paalanen 2014-09-03 06:30:49 UTC
Ok, at least those logs are a good lead. Such a flood should not be sent at all, so we'd better fix the underlying cause rather than paper over it in libwayland-client.
Comment 3 Pekka Paalanen 2014-09-15 08:27:25 UTC
Should be fixed by:

commit b2c18647775732da740946eb199b1f2b46ba950b
Author: Ondřej Majerech <majerech.o@gmail.com>
Date:   Sat Sep 13 16:35:45 2014 +0200

    window: Don't needlessly sync parent and geometry

It's part of Weston master and will be released with 1.6.0.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.