|
Hi Alexander, thanks for the info. The -l37 option requres that you either: ./configure DYNAMIC_LOG_WANTED=yes or: make develop after ./configure and before make install. The background of all this is the fact that, by default, GNU/Linux overcommits memory. It can happen that: malloc() (or new[] for that matter) returns non-zero (indicating the memory requested is available) but then the process segfaults when that memory is being initialized. In that situation (which is rare, but was indeed observed) the C++ exception handling fails and the process crashes without a way to catch this case. This only occurs when memory allocated before is already close to the memory available. Apparently the exception handler itself is unable to allocate memory for itself and simply gives up. In order to avoid this case GNU APL tries to figure the really available memory in three ways: 1. by analyzing /proc./meminfo which tells how much physical memory might be available at most. This memory is usually more than you can really get. 2. by analyzing the process memory limit as reported by system call getrlimit(). 3. by always limiting the memory to 0xC0000000 (= 3221225472 or about 3Gig which is one of the numbers that you see in the warning). Apparently getrlimit() tells that the process has exactly twice that amount (about 6 Gig which unfortunately exceeds 32-bit integers. apl -l37 would have given us more information about the situation. On GNU/Linux resp. bash getrlimit() defaults to 'unlimited' which does not tell you much unless you set it (e.g. via ulimit -v). However 2. above was created for those cases where 1. fails (like in your case), and 3. above was meant to deal with the cases where both 1. and 2. fail. Now back to the warning: The warning is issued because the memory limit set for the process exceeds the safety guard set by 3. above. In short the interpreter believes that the process has permission to use 6 Gig of physical memory on a machine with only 3 Gig. The simplest solution for this is to ignore the warning. You will then most likely get a WS FULL shortly before the actual memory consumption of the process running the apl interpreter reaches 3 Gig. Another solution is to suppress the warning by setting a process memory limit to a value ≤ 3Gig by means of ulimit (hope you have it in BSD). In neither case will you be able to get a workspace that is bigger that 3Gig. If that is needed then I have to think about another solution, e.g. a command line argument and/or a preference setting. Best Regards, Jürgen On 4/8/20 3:39 PM, Alexander Shendi
wrote:
Hi Dr. Sauermann, I'm supplying the desired info: |
- Building GNU APL (1.8, SVN: 1252) under OpenBSD/amd... Alexander Shendi
- Re: Building GNU APL (1.8, SVN: 1252) under Op... Dr . Jürgen Sauermann
- Re: Building GNU APL (1.8, SVN: 1252) unde... Brian Callahan
- Re: Building GNU APL (1.8, SVN: 1252) ... Rowan Cannaday
- Re: Building GNU APL (1.8, SVN: 1252) unde... Alexander Shendi
- Re: Building GNU APL (1.8, SVN: 1252) ... Dr . Jürgen Sauermann
- Re: Building GNU APL (1.8, SVN: 12... Dr . Jürgen Sauermann
- Re: Building GNU APL (1.8, SVN: 1252) unde... Alexander Shendi
