oscar-system / GAP.jl

GAP packages for Julia integration
https://oscar-system.github.io/GAP.jl/
GNU Lesser General Public License v3.0
69 stars 22 forks source link

`fgets` error again #1050

Open ThomasBreuer opened 2 months ago

ThomasBreuer commented 2 months ago

The problem from issue #971 is back (or was never really gone), see oscar-system/Oscar.jl/issues/4136.

julia> using GAP
[ Info: Compiling JuliaInterface ...
 ┌───────┐   GAP 4.13.1 of 2024-06-11
 │  GAP  │   https://www.gap-system.org
 └───────┘   Architecture: x86_64-pc-linux-gnu-julia1.8-64-kv9
 Configuration:  gmp 6.2.1, Julia GC, Julia 1.8.5, readline
 Loading the library and packages ...
reading ~/.gap/gaprc
 Packages:   AClib 1.3.2, Alnuth 3.2.1dev, AtlasRep 2.1.9, AutPGrp 1.11, 
             Browse 1.8.21, CRISP 1.4.6, Cryst 4.1.27, CrystCat 1.1.10, 
             CTblLib 1.3.9, FactInt 1.6.3, FGA 1.5.0, Forms 1.2.11, 
             GAPDoc 1.6.7.dev, genss 1.6.8, IO 4.9.0, IRREDSOL 1.4.4, 
             JuliaInterface 0.11.4, LAGUNA 3.9.6, orb 4.9.0, Polenta 1.3.10, 
             Polycyclic 2.17dev, PrimGrp 3.4.4, RadiRoot 2.9, recog 1.4.3, 
             ResClasses 4.7.3, SmallGrp 1.5.3, Sophus 1.27, SpinSym 1.5.2, 
             StandardFF 1.0, TomLib 1.2.11, TransGrp 3.6.5, utils 0.85
 Try '??help' for help. See also '?copyright', '?cite' and '?authors'

julia> GAP.Packages.load("sglppow")
true

julia> exit()
fgets() failed with errno 5
Input/output error

Alternatively:

When one starts Julia, enters using GAP and then GAP.prompt(), the GAP test code from gap-system/gap/pull/5666 (this pull request was expected to solve the problem)

gap> d := DirectoryCurrent();;
gap> f := Filename(DirectoriesSystemPrograms(), "rev");;
gap> s := InputOutputLocalProcess(d,f,[]);;
gap> Sleep(1);
gap> CloseStream(s); Print("\n");

results in the message rev: stdin: Input/output error.

There is no such problem in GAP 4.13.1 without Julia.

fingolfin commented 2 months ago

The issue is still the same: the stream is closed while Singular is still running. The fix I applied in GAP only helps if Singular reacts immediately to the "kill".

It might help to first send the command exit; to that Singular process. We can possibly do that in an atexit handler, too.

fingolfin commented 2 months ago

I've updated GAP_jll to avoid the issue. So people doing ]up should not suffer from this anymore.

Unfortunately I just rebuild GAP_jll, so there is no new version we could require in Project.toml. I may rebuild it with a new version later on anyway just so we can do that. But not right now

ThomasBreuer commented 2 months ago

Great that this issue is solved finally!