On Thursday, December 1, 2011 4:27:56 PM UTC+8, Juanjo wrote: > > On Thu, Dec 1, 2011 at 3:38 AM, Dima Pasechnik <dim...@gmail.com> wrote: > >> I don't see how you managed to completely avoid it (I hope we talk about >> the same ECL version, do we?! We use >> http://sage.math.washington.edu/home/kcrisman/ecl-11.1.1.p3.spkg). >> > > I do not know what stage of change this includes. >
OK, our fault - the information on which ECL version should be used did not get to the appropriate Cygwin-related sage Trac pages (such as ticket #6743) on time, and I was experimenting (and fighting) with an ld ECL. Now it's fixed, and I am happy to report that I was able to build this new ECL and use it to build Maxima on Cygwin without any problems. (I'm using ECL CVS release 20111120<http://boxen.math.washington.edu/home/jdemeyer/spkg/ecl-11.1.2.cvs20111120.p0.spkg> now). > What I meant is that ECL does not, by itself, call execve(), fork(), or > relatives at all when using Cygwin, and instead relies on "system". What > cygwin does under the hood (for instance if it is so unfortunate to use > fork() when executing system()) is a mistery to me. > > >> Without the hack I found, one still often gets things like this one: [...] >> 3 [main] ecl 2880 >> C:\cygwin\usr\local\sage\sage-4.7.2\local\bin\ecl.exe: *** fatal error - >> unable to remap \\?\C:\cygwin\tmp\eclcWIpUD.dll to same address as parent: >> 0x530000 != 0x810000 >> Stack trace: >> Frame Function Args >> 0022A118 6102796B (0022A118, 00000000, 00000000, 00000000) >> 0022A408 6102796B (6117EC60, 00008000, 00000000, 61180977) >> 0022B438 61004F1B (611A7FAC, 6124E2FC, 00530000, 00810000) >> End of stack trace >> > > Seems again fork has been used. > > >> The reason my hack helps fork() to work is due to these temporary DLLs >> (I still don't know where they come from, by the way) being placed in >> memory in a more favourable way, which does not give Windows a reason to >> move them around (and moving them around is exactly the reason for >> that "*** fatal error - unable to remap \\?\C:\cygwin\tmp\eclcWIpUD.dll" >> things) >> > > I find that hack questionable. Will it work everywhere with any library > loaded? Does it block other user's software from running? Hardcoding memory > addresses is what has been pestering all Common Lisp implementations in the > history and prevented not only portability but also maintainability. > well, it is hardcoring addresses of temporary DLLs, that are gone after the compilation is done. This should not be too harmful. Anyway, with the new ECL this also does not seem to be needed! > > Regarding the "due to these temporary DLLs (I still don't know where they > come from, by the way)", the explanation is simple. Maxima is asking ECL to > compile fragments of code via the C compiler, probably using the Common > Lisp function COMPILE. A way to circumvent this problem (which makes sense > for it also eliminates the use of the C compiler when Sage is used) is to > replace this function with the bytecodes compiler, which is cheaper and > does not invoke gcc. > > > (progn > (ext:package-lock "CL" nil) > (setf (fdefinition 'compile) #'ext::bc-compile) > (ext:package-lock "CL" t)) > #<"COMMON-LISP" package> > > #'compile > #<compiled-function EXT::BC-COMPILE> > > (compile 'foo '(lambda (x) (print x))) > FOO > NIL > NIL > > (foo 2) > 2 > 2 > > #'foo > #<bytecompiled-closure #<bytecompiled-function 00000001039b9000>> > > The first four lines may be inserted in Maxima's code, probably at the end > of ECL's portability section. > > #+cygwin > (progn > (ext:package-lock "CL" nil) > (setf (fdefinition 'compile) #'ext::bc-compile) > (ext:package-lock "CL" t)) > > Thank you, this is very good to know, just in case we start to hit a similar snag again. Dima > Juanjo > > -- > Instituto de FĂsica Fundamental, CSIC > c/ Serrano, 113b, Madrid 28006 (Spain) > http://juanjose.garciaripoll.googlepages.com > -- To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org