[kaffe] Re: Problem with rxtx

Guilhem Lavaux guilhem at kaffe.org
Thu Jun 17 10:55:03 PDT 2004


Fabien Renaud wrote:
> Fabien Renaud wrote:
> 
>> Hello !!
>>
>> I´m still with my problems ;)
>>
>> Well I don´t think this one is specific to ARM ( I hope, so maybe 
>> you´ll be able to help me :) )
>>
>> So, when I want to run a simple sample to communicate with serial 
>> interface ( I have rxtx lib) I have a lot of things on my screen 
>> (which seem ok), then this :
>>
>> RXTX WARNING:  This library was compiled to run with OS release 
>> 2.4.20_dev and you are currently running OS release 2.4.21-rmk2
>> -pxa1.  In some cases this can be a problem.  Try recompiling RXTX if 
>> you notice strange behavior.  If you just compiled RXTX m
>> ake sure /usr/include/linux is a symbolic link to the include files 
>> that came with the kernel source and not an older copy.
>>
>> press enter to continue
>>
>> If I press continue nothing happened.
>>
>> This is the backtrace :
>>
>> #0  0x4029939c in *__GI___poll (fds=0xbfffdd28, nfds=1, timeout=-1)
>>    at ../sysdeps/unix/sysv/linux/poll.c:85
>> #1  0x400cdc58 in handleIO ()
>>   from /home/java/kaffe/jre/lib/arm/libkaffevm-1.1.4.so
>> #2  0x400cd924 in reschedule ()
>>   from /home/java/kaffe/jre/lib/arm/libkaffevm-1.1.4.so
>> #3  0x400cb380 in suspendOnQThread ()
>>   from /home/java/kaffe/jre/lib/arm/libkaffevm-1.1.4.so
>> #4  0x400ce668 in jcondvar_wait ()
>>
>> With sablevm the program runs when I press enter.
>>
>> I attach SimpleWrite.java
>>
>>
>> Someone have ever run rxtx with kaffe ?
>>
>> Fabien
>>
>> ------------------------------------------------------------------------
>>
>> import java.io.*;
>> import java.util.*;
>> import gnu.io.*;
>>
>>
>> public class SimpleWrite {
>>    static Enumeration portList;
>>    static CommPortIdentifier portId;
>>    static String messageString = "Hello, world!\n";
>>    static SerialPort serialPort;
>>    static OutputStream outputStream;
>>
>>    public static void main(String[] args) {
>>        portList = CommPortIdentifier.getPortIdentifiers();
>>        while ( portList.hasMoreElements() ) {
>>            portId = (CommPortIdentifier) portList.nextElement();
>>            if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
>>                if (portId.getName().equals("/dev/ttyS3")) {
>>                    try {
>>                        serialPort = (SerialPort)
>>             portId.open("SimpleWriteApp", 2000);
>>             System.out.println("ok");
>>                    } catch (PortInUseException e) {
>>             System.out.println("not ok");
>>             }
>>                    try {
>>                        outputStream = serialPort.getOutputStream();
>>                    } catch (IOException e) {}
>>             System.out.println("test 3");
>>                    try {
>>                        serialPort.setSerialPortParams(9600,
>>                            SerialPort.DATABITS_8,
>>                            SerialPort.STOPBITS_1,
>>                            SerialPort.PARITY_NONE);
>>                    } catch (UnsupportedCommOperationException e) {}
>>                    try {
>>                        outputStream.write(messageString.getBytes());
>>                    } catch (IOException e) {}
>>             serialPort.close();
>>                }
>>            }
>>        }
>>    }
>> }
>>  
>>
> 
> I have now more informations with kaffe-1.1.4:
> 
> Program received signal SIGINT, Interrupt.
> [Switching to Thread 16384 (LWP 743)]
> 0x4025c39c in *__GI___poll (fds=0xbfffe054, nfds=1, timeout=-1)
>    at ../sysdeps/unix/sysv/linux/poll.c:85
> 85      ../sysdeps/unix/sysv/linux/poll.c: No such file or directory.
>        in ../sysdeps/unix/sysv/linux/poll.c
> (gdb) where
> #0  0x4025c39c in *__GI___poll (fds=0xbfffe054, nfds=1, timeout=-1)
>    at ../sysdeps/unix/sysv/linux/poll.c:85
> #1  0x4009217c in handleIO (canSleep=1) at jthread.c:2147
> #2  0x40091de4 in reschedule () at jthread.c:2026
> #3  0x4008fb78 in suspendOnQThread (jtid=0xc0018, queue=0xc0028, 
> timeout=-1)
>    at jthread.c:911
> #4  0x40092a34 in jcondvar_wait (cv=0xc0028, lock=0xc0020, timeout=-1)
>    at jthread.c:2365
> 
> The line in jthread.c is this one :
> 
> #if USE_POLL
>        r = poll(pollarray, nfd, sleep ? -1 : 0);   <- line 2147
> #else

Hi Fabien,

Thanks for insisting in fixing ARM ! ;)

This bug was "normal". The stack size detection was still buggy in kaffe 
1.1.4. Now it has been cleaned up and improving. Yet, I don't know why 
the dead lock detection doesn't work (I have to dig into this one day).

> 
> 
> I tried with HEAD too and I have segfault :
> 
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 16384 (LWP 796)]
> callMethodA (meth=0x1b8cb8, func=0x1b8cb8, obj=0x0, args=0xbfffe198,
>    ret=0xbfffe964, promoted=1) at support.c:653
> 653     support.c: No such file or directory.
>        in support.c
> (gdb) where
> #0  callMethodA (meth=0x1b8cb8, func=0x1b8cb8, obj=0x0, args=0xbfffe198,
>    ret=0xbfffe964, promoted=1) at support.c:653
> #1  0x4006eba8 in virtualMachine (meth=0x1b8cb8, arg=0xbfffe190,
>    retval=0xbfffe964, thread_data=0xa902c) at machine.c:137
> #2  0x400710a4 in runVirtualMachine (meth=0x1b8e20, lcl=0xbfffe160,
>    sp=0xbfffe188, npc=41, retval=0xbfffe964, mjbuf=0xbfffe1e8,
>    thread_data=0xa902c) at kaffe.def:2832
> 

It seems that thread_data has been corrupt. What does gdb says for it ? 
(use "directory 'a_kaffevm_source_directory'" to make it find 
support.c). For example what is in the pointer for thread_data and what 
is in (if gdb can do it).

Cheers,

Guilhem.

> Is someone has now an idea :)
> 
> Cheers,
> 
> Fabien
> 
>




More information about the kaffe mailing list