Opened 7 years ago
Closed 7 years ago
#16474 closed defect (fixed)
timeouts in doctests on OS X 10.9
Reported by: | jhpalmieri | Owned by: | |
---|---|---|---|
Priority: | critical | Milestone: | sage-6.3 |
Component: | interfaces | Keywords: | |
Cc: | vbraun | Merged in: | |
Authors: | Volker Braun | Reviewers: | John Palmieri |
Report Upstream: | N/A | Work issues: | |
Branch: | 2928b9a (Commits) | Commit: | 2928b9a4b17c7ccb49a72ee1f1e39b734803ae7e |
Dependencies: | Stopgaps: |
Description (last modified by )
There are frequent timeouts when doctesting on OS X with pexpect interfaces, in particular Singular. For example:
$ ./sage -tp src/doc/en/constructions ... ---------------------------------------------------------------------- sage -t src/doc/en/constructions/algebraic_geometry.rst # Timed out sage -t src/doc/en/constructions/polynomials.rst # Timed out ----------------------------------------------------------------------
These became much more frequent by the changes in the Singular/pexpect interface from #15631 on two buildbots:
- OSX 10.9 (Oxford)
- Ubuntu 8.04 (UW)
- This happens mostly during parallel doctesting, and disappers when the system load is low
Other build bots do not seem to be affected, so its a likely pty kernel bug.
Change History (11)
comment:1 Changed 7 years ago by
- Cc vbraun added
comment:2 Changed 7 years ago by
comment:3 Changed 7 years ago by
I'm not suggesting this as a fix (because I don't know anything about the pexpect interface), but if I make this one change:
-
src/sage/interfaces/singular.py
diff --git a/src/sage/interfaces/singular.py b/src/sage/interfaces/singular.py index 576fcc7..97ed05d 100644
a b class Singular(Expect): 378 378 """ 379 379 prompt = '> ' 380 380 Expect.__init__(self, 381 terminal_echo= False,381 terminal_echo=True, 382 382 name = 'singular', 383 383 prompt = prompt, 384 384 command = "Singular -t --ticks-per-sec 1000", #no tty and fine grained cputime()
then I don't get the timeouts any more. (I get other doctest failures because of this, but no timeouts.)
comment:4 Changed 7 years ago by
in case, note #16260#comment:62
comment:5 Changed 7 years ago by
- Description modified (diff)
I've debugged the issue on OSX 10.9 and when the hang happens
- Singular does print its header and prompt (captured with dtrace)
- Python never sees any output from the subprocess, the first select() in
pexpect.read_nonblocking
hangs forever.
One way to reduce the likelihood of the hang is to insert a sleep before first reading from the subproces (in expect._start
)
comment:6 Changed 7 years ago by
Sleeping 100ms when starting Singular reduces the failure rate in sage -t --long src/sage/interfaces/magma.py
from about 1/10 to 1/1000 fwiw.
comment:7 Changed 7 years ago by
- Branch set to u/vbraun/timeouts_in_doctests_on_os_x_10_9
comment:8 Changed 7 years ago by
- Commit set to 2928b9a4b17c7ccb49a72ee1f1e39b734803ae7e
The branch attached is obviously a no-op, and just moves the setecho(0) further down after we read the first prompt. But it seems to improve things in my limited testing.
New commits:
2928b9a | Fix Singular pexpect timeouts on some platforms
|
comment:9 Changed 7 years ago by
- Status changed from new to needs_review
This seems to fix it, I haven't seen another failure in sage -t --long src/sage/interfaces/magma.py
comment:10 Changed 7 years ago by
- Reviewers set to John Palmieri
- Status changed from needs_review to positive_review
Oh, very nice. This fixes it on two OS X 10.9 machines.
comment:11 Changed 7 years ago by
- Branch changed from u/vbraun/timeouts_in_doctests_on_os_x_10_9 to 2928b9a4b17c7ccb49a72ee1f1e39b734803ae7e
- Resolution set to fixed
- Status changed from positive_review to closed
even after reverting the corresponding commit from #15631 I still get lots of doctest timeouts.