On 1/19/24 15:18, Serge wrote:
This post is a continuation of the post *[R-pkg-devel] Does dependencies up to date on the pretest CRAN infrastructure*

I made more (unsuccessful) tries:

- I installed a Windows 11 version in a VM on my compuiter and try to buid the MixAll package using Rtools42 and Rtools43 (it's quite easy, and funny, to do it on windows: you have just to rename C:\rtools42 as C:\rtools43).
There should be no renaming, instead, one should use R 4.2.x with Rtools42 and R 4.3.x (or current R-devel) with Rtools43. All of these can co-exist (be installed at the same time). Mixing the two could lead to different failures. I understand you want to test different versions of GCC, but to do that reliable you would have to rebuild the rest of Rtools with that, or just the part that is needed by the package.

The result is that MixAll is build using the 4.2 version and the buid failed using the 4.3 version.
Please make sure to use Rtools43 (the real one) with R 4.3.

- I installed the version 12.3 of gcc on ubuntu (the same version used on windows) and could build the package without problem

- Inspecting the log of the Rtools4.3 (https://cran.r-project.org/bin/windows/Rtools/rtools43/news.html) and g++12..3 (https://gcc.gnu.org/gcc-12/changes.html) does not give insight.

- The package is dependent of the rtkore package which use extensive use of templated class. As rtkore is a port for R of stk++, I try to compile the stk++ library on windows (using g++12). All tests are compiled without any troubles.

These attempts eliminate some causes, but don't give me any insight why MixAll (and blockcluster) failed to be build on the Windows-devel platform. It seems related to Rtools43. Does anyone else (using for exemple Rcppeigen) is experiencing this problem ?

If this is GCC running out of memory on Windows but not Linux, when there really should be enough of memory available (i.e. due to the problem that Uwe described, maybe the internal GC in GCC is asking for too much memory for its heap given that the OS is not overcomiting), you can try narrowing it down to a standalone C++ program (independent on R, Rtools, R packages, compilable on both Windows and Linux with disabled optimizations, etc) that still exhibits the problem and then submitting it in a bug report to GCC bugzilla.

In such case, it could be that some heuristics in the collector could be improved.

If you have such standalone example, it would be easier to test different versions of GCC or even bisect to a concrete GCC version. You might also compare memory usage when compiling and cross-compiling.

You might also be able to find a work-around for your package by disabling some compiler optimizations. Also if you can narrow this down to a concrete GCC optimization then it would help to mention that in the bug report.

Certainly all of this would be out of scope of R-(pkg)-devel, this would rather be a GCC/Windows thing.

Tomas


Serge



Le 14/01/2024 à 18:50, Uwe Ligges a écrit :


On 13.01.2024 15:01, Uwe Ligges wrote:
Fascinating, now it worked with the latest winbuilder submission 3 times in a row when I checked it manually. So maybe Ivan was right and there was a very demanding set of other packages compiling at the same time?
I don't know.

Serge, Can you somply submit your latest winbuilder upload to CRAN?

Really, I inspected some more. The underlying issue is simple:
The C++ compiler used under Windows asks for precomitted memory. If several processes are running at the same time, a lot of memory is precomitted. And Windows does not use it for other processes, even if almost nothing is actually used. So while the used memory may be around 50GB, all of the rest (of 756 GB including swap space) may have been precomitted (but unused) and new processes failed to start correctly. Grrrr.

Best,
Uwe Ligges





Best,
Uwe Ligges



On 13.01.2024 14:12, Uwe Ligges wrote:
I can take a look, but not sure if I get to it before monday.
I haven't seen it for any other packages recently.

My suspicion is currently a strange mix of cmd.exe and sh.exe calls. But this is a very wild guess.

Best,
Uwe

On 13.01.2024 14:08, Uwe Ligges wrote:


On 13.01.2024 10:10, Ivan Krylov via R-package-devel wrote:
В Fri, 12 Jan 2024 21:19:00 +0100
Serge <serge.iovl...@stkpp.org> пишет:

After somme minor midficiations, I make a try on the winbuilder site.
I was able to build the archive with the static library
but I get again a Bad address error. You can have a look to

https://win-builder.r-project.org/bw47qsMX3HTd/00install.out

I think that Win-Builder is running out of memory. It took some
experimenting, but I was able to reproduce something like this using
the following:

1. Set the swap file in the Windows settings to minimal recommended
size and disable its automatic growth

2. Write and run a program that does malloc(LARGE_NUMBER); getchar();
so that almost all physical memory is allocated

3. Run gcc -DFOO=`/path/to/Rscript -e 'some script'` & many times

I got a lot of interesting errors, including the "Bad address":

Warnings:
1: .getGeneric(f, , package) : internal error -4 in R_decompress1
2: package "methods" in options("defaultPackages") was not found

0 [main] bash (2892) child_copy: cygheap read copy failed,
0x0..0x800025420, done 0, windows pid 2892, Win32 error 299

0 [main] bash (3256) C:\rtools43\usr\bin\bash.exe: *** fatal error in
forked process - MEM_COMMIT failed, Win32 error 1455

-bash: fork: retry: Resource temporarily unavailable

-bash: R-devel/bin/Rscript.exe: Bad address

The above indeed happens if not sufficient memory would be available.
Important to know: This includes unused but committed memory which may be a lot. But I doubt it is the case on winbuilder as the machines has 256GB or more (depending in the machine) and additionally 500GB swap space on SSD.

Best,
Uwe


Your package is written in C++, but that by itself shouldn't disqualify
it. On my Linux computer, /usr/bin/time R -e
'install.packages("MixAll")' says that the installation takes slightly
less than a gigabyte of memory ("912516maxresident k"), which is par
the course for such packages. (My small Rcpp-using package takes
approximately half a gigabyte by the same metric.)

I'm still not 100% sure (if Win-Builder is running out of memory, why
are you seeing "Bad address" only and not the rest of the carnage?),
but I'm not seeing a problem with your package, either. If EFAULT is
Cygwin's way of saying "I caught a bad pointer in your system call"
(which, I must stress, is happening inside /bin/sh, not your package
or even R at all), it's not impossible that Win-Builder is having
hardware problems. Unfortunately, they take a lot of effort and
downtime to diagnose and could be hiding anywhere from RAM to the power
supply.


______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to