Sorry, Phil, this is (currently) not open source software for many reasons. Depending on how Pharo moves in the future, however, we might consider opening it.



On 2017-05-03 16:09, [email protected] wrote:
How could I load that JVM bridge?

I am having a use case or two for that and was thinking that this was
not working with new Pharos.

TIA
Phil

On Wed, May 3, 2017 at 2:32 PM, Raffaello Giulietti
<[email protected]> wrote:
Problem solved.

The cause was a mismatch between a 0-based index and a 1-based index on
copying arrays between Smalltalk and C.

Rather confusingly, for some reason, FFI indices are 1-based even for C
arrays, so that calling ExternalAddress>>byteAt:put:, for example, requires
the index to be unnaturally 1-based.

While I put a lot of care at this issue, a specific spot in the code was
erroneous, leading to an improperly terminated C-style string which, in
turn, caused the indirect crash of Pharo.

My fault, however, neither Pharo's nor the JVM's.


Thanks to all involved in replies.


Greetings
Raffaello



On 2017-05-03 13:52, Ben Coman wrote:



On Wed, May 3, 2017 at 4:33 PM, Raffaello Giulietti
<[email protected] <mailto:[email protected]>>
wrote:

     Unfortunately, as I just discovered, older versions of Pharo do not
     support UFFI. I don't have the time (nor a real interest) in
     backporting the code to an older pre-Spur VM which has probably
     reached its EOL just for the sake of experimentation. It would
     probably take hours to understand the older FFI model and to adapt
     the code for no real advantage.

     The current Pharo VM seems to support only the --memory option: I
     tried with 1 and 2 GiB, nothing changes in the misbehavior.

     I also tried the two heap-related JVM options in isolation,
     unsuccessfully. Just for information, the current values for the
     options are -Xms16m and -Xmx512m, meaning that the JVM heap should
     start with 16 MiB and grow to a maximum size of 512 MiB, both of
     which are rather modest values even for a 32 bit process. Besides,
     they work in VisualWorks (32 bit).


What about tiny memory allocation like  --memory 100m and  -Xmx 100m ?

Can you share some code that causes the crash?

cheers -ben


     The StackOverflow page indicated below is from year 2010, during the
     age of Java 6. The JVM has undergone major changes since then,
     including memory management, so I'm not sure the discussion there is
     relevant for Java 8, the release we are targeting as of today. But
     even if it were, I still cannot understand the crash in Pharo.









     On 2017-05-03 06:36, Ben Coman wrote:



         On Wed, May 3, 2017 at 12:30 AM, Denis Kudriashov
         <[email protected] <mailto:[email protected]>
         <mailto:[email protected] <mailto:[email protected]>>>
wrote:

              Could you check how it works with Pharo5 which was based on
         prespur
              CogVM?


         Note, Pharo 5 Release was a Spur VM.
         Try using...
         http://files.pharo.org/get-files/50-preSpur/
         <http://files.pharo.org/get-files/50-preSpur/>
         http://files.pharo.org/image/50-preSpur/50495.zip
         <http://files.pharo.org/image/50-preSpur/50495.zip>

         or even Pharo 4.

         cheers -ben


              2017-05-02 16:36 GMT+02:00 Raffaello Giulietti
              <[email protected]
         <mailto:[email protected]>
              <mailto:[email protected]
         <mailto:[email protected]>>>:


                  Hello,

                  I'm on Pharo 6 (32 bit)/Windows 10 (64 bit).

                  I'm trying to load and use the (32 bit) JVM DLL into a
         running
                  Pharo image via the UFFI.

                  Everything works correctly, including JVM method
         invocations,
                  except when trying to set the minimum and maximum JVM
         heap size
                  by passing the -Xms<size> and -Xmx<size> options upon JVM
                  creation. With these options, Pharo simply crashes
without
                  leaving any trace.


         Can you isolate whether the problem is either one of those, or
         it happens with both, and if there is some cutoff where it
         works?  Also, perhaps try limiting heap being used by Pharo
                --memory <size>[mk]    use fixed heap size (added to
         image size)
                --mmap <size>[mk]      limit dynamic heap size (default:
         1024m) [out 2G on 32-bit)
                --maxoldspace <size>[mk]    set max size of old space
         memory to bytes
                (disclaimer, I'm not too knowledgeable on these, just
         pulled them from --help)

         Also consider that heap needs to be contiguous...

**http://stackoverflow.com/questions/2457514/understanding-max-jvm-heap-size-32bit-vs-64bit

<http://stackoverflow.com/questions/2457514/understanding-max-jvm-heap-size-32bit-vs-64bit>
         cheers -ben


                  Apparently, memory management requests from the JVM
         interfere
                  with Pharo's own memory management.

                  Please note that we successfully use the same mechanism
         for both
                  VisualWorks (32 bit)/Windows 10 (64 bit) and Gemstone 64
                  bit/Linux, so it seems it has to do with a Pharo
         limitation somehow.

                  Further, I couldn't find any documentation on how to
         increase
                  Pharo's working set.

                  So the questions are:
                  * What is the most probable cause of the crash
         described above?
                  * Where is there more doc about Pharo's memory
         configuration
                  settings?

                  Greetings
                  Raffaello












Reply via email to