harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Etienne Gagnon <egag...@sablevm.org>
Subject Re: [sablevm] SIGSEGV signal received from Cygwin
Date Thu, 06 Apr 2006 16:34:39 GMT
Enrico Migliore wrote:
> I debugged the classical HelloWorld class with DDD and found the problem
> in the following function:
> 
> _svmf_init(void)
> {
> pthread_once(...);    <---- SEGSEGV  signal

That's definitely a cygwin bug.  I see.

>>> problem 1:  POSIX dependancy
>>> ---------------------------------
>>>...
>> I think that moving to Harmony's port library should solve this.  I
>> agree that it shouldn't be hard to fix.
>>
> Are you referring to the work-in-progress that is adapting SableVM to
> the VMI?

Yep.

>>> problem 2:  GCC extensions
>>> -----------------------------
>>...
>> this: use Hans Boehm's atomic_ops library to get this code out of
>> SableVM.  See:
>>
>> http://sablevm.org/bugs/179

Just FYI, fixing this is a short term objective.  (i.e. work in progress).

> In any case, before starting the port, I think that I and the people who
> would like to help, will have analyze the code file by file.

Actually, you should really start looking at:

 src/libsablevm/include/jni_system_specific.h
 src/libsablevm/system.c
 src/libsablevm/system.h

These are the files which contain system-specific code.  Outside of
these files, the only real dependencies are POSIX calls.  [I think
there's some exception in System.getCurrentMillis() implementation that
shouldn't even be in the VM to start with, as there's no VM-specific
functionality in it...  I had to live with Classpath's decisions on
their VM interface.]

If you really want to read every single source file (!), then you should
definitely:
0.1) [prerequisite] read the JVMS fully, a few times over
0.2) [prerequisite] read the JNI spec fully, a few times over
1) read my Ph.D. thesis
2) read the documents in doc/
3) ask questions on sablevm-devel@ for clarifications

Going that deep shouldn't be necessary, though.  Identifying POSIX
dependencies and replacing them with VMI-port calls should be sufficient
to start with.

Etienne

-- 
Etienne M. Gagnon, Ph.D.            http://www.info2.uqam.ca/~egagnon/
SableVM:                                       http://www.sablevm.org/
SableCC:                                       http://www.sablecc.org/

Mime
View raw message