New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cygwin: test failure in sage.manifolds.differentiable.affine_connection #22694
Comments
comment:1
The |
comment:3
Attachment: stacktrace.log By the way, I've made significant progress in getting to the bottom of this. The full traceback leading up to the SIGABRT is attached. But the main issue here seems to have to do with libgc's handling of threads in the child process after a fork, on Cygwin. In principle libgc explicitly supports Cygwin, but there still seems to be a bug somewhere related to this (or possibly just a build issue though I haven't found that to be the case yet...). I'm trying to boil it down to a simpler test case, but the issue seems to be that for one reason or another the post-fork handler is either not running at all, or not working properly, because in the forked process it's leaving behind a reference to a thread from the parent process, which has a handle to a native (Windows) thread that is no longer valid in the child process. The A possible short-term workaround might be to compile libgc with threads disabled on Cygwin, but I don't know what other impacts that would have. |
comment:4
Confirmed that building libgc with But I'd still like to get to the bottom of this; ISTM like it might be a simple bug at the end of the day. |
comment:5
Replying to @embray:
Thanks for this update. |
comment:6
Okay, it turns out the That said, the fact that it outright crashes on Windows without this option is also a bug, IMO, albeit fixable I think. But for Sage's purposes it will be easy enough to add the appropriate flags when building on Cygwin \o/ |
comment:7
Replying to @egourgoulhon:
Actually this doctest passes fine as is. This issue only arises in certain cases if ECL is allocating a lot of small objects, and gc needs to suspend all the threads whose stacks it's monitoring so that it can make more room in its heap for more small objects (at least, that's how I understand the issue). |
comment:8
Replying to @embray:
Very good! |
comment:9
Replying to @embray:
OK I see. Indeed the doctests in |
Author: Erik Bray |
Commit: |
This comment has been minimized.
This comment has been minimized.
Branch: u/embray/cygwin/ticket-22694 |
Upstream: Reported upstream. No feedback yet. |
comment:10
I've attached a patch to Sage to configure GC to work properly on Cygwin. I've also made an upstream report, but only to suggest that the default configuration for Cygwin should incorporate this (since it's broken otherwise). I don't think there's a great way to work around the issue in the code without using New commits:
|
comment:11
LGTM. |
Reviewer: Eric Gourgoulhon |
comment:12
Looks good to me. |
Changed reviewer from Eric Gourgoulhon to Eric Gourgoulhon, Jean-Pierre Flori |
comment:14
Replying to @jpflori:
Thanks! |
Changed branch from u/embray/cygwin/ticket-22694 to |
I'm consistently getting these test failures in this module on my Cygwin branch (just rebased on the latest develop branch, but I've had this for a couple weeks now):
I can reproduce this outside the test suite as well. The same code works fine without parallel processing, so my guess is a problem in the parallel processing itself (though the tests for
sage.parallel
itself all pass).Upstream report: https://lists.opendylan.org/pipermail/bdwgc/2017-March/006266.html
Upstream: Reported upstream. No feedback yet.
CC: @man74cio @egourgoulhon @jpflori
Component: porting: Cygwin
Keywords: windows cygwin manifolds parallel
Author: Erik Bray
Branch/Commit:
877a3fd
Reviewer: Eric Gourgoulhon, Jean-Pierre Flori
Issue created by migration from https://trac.sagemath.org/ticket/22694
The text was updated successfully, but these errors were encountered: