Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 1 Jun 2012 21:03:00 +0300
From:      Kustaa Nyholm <Kustaa.Nyholm@planmeca.com>
To:        "freebsd-java@freebsd.org" <freebsd-java@freebsd.org>
Subject:   Re: tcgetattr hangs
Message-ID:  <CBEEDDFD.389B1%kustaa.nyholm@planmeca.com>
In-Reply-To: <20120529110220.GI2358@deviant.kiev.zoral.com.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
On 5/29/12 14:02, "Konstantin Belousov" <kostikbel@gmail.com> wrote:
>>Here is a piece of our debug log that shows the calls from Java to the
>>native
>>API showing the end of the successful Test2 and the hang at the
>>beginning
>>of Test3:
>>log: > select(9,[8],[],[],jtermios.TimeVal@6f507fb2)
>>.................................. OK average speed log: <
>>select(9,[],[],[],jtermios.TimeVal@6f507fb2) =3D> 0
>>log: > select(9,[8],[],[],jtermios.TimeVal@6f507fb2)
>>18241 b/sec at baud rate 19200
>>log: > fcntl(8, 3, 0)
>>log: < fcntl(8, 3, 0) =3D> 2
>>log: > fcntl(8, 4, 6)
>>log: < fcntl(8, 4, 6) =3D> 0
>>log: > close(8)
>>log: < close(8) =3D> 0
>>Test3 - transmit all characters     log: <
>>select(9,[8],[],[],jtermios.TimeVal@6f507fb2) =3D> -1
>>log: > open('cuau0',00008006)
>>log: < open('cuau0',00008006) =3D> 8
>>log: > close(8)
>>log: < close(8) =3D> 0
>>log: > open('cuau0',00008006)
>>log: < open('cuau0',00008006) =3D> 8
>>log: > fcntl(8, 3, 0)
>>log: < fcntl(8, 3, 0) =3D> 6
>>log: > fcntl(8, 4, 2)
>>log: < fcntl(8, 4, 2) =3D> 0
>>log: > tcgetattr(8,jtermios.Termios@5a77a7f9)
>>All comments welcome.
>
>Verify that the thread indeed hang in ioctl, executed on the right
>file descriptor and TIOCGETA ioctl command. You may use ktrace(1)
>or truss(1) for this.
>
>If ioctl(TIOCGETA) is indeed what was called, then look at the in-kernel
>backtrace of the hung thread with procstat -kk <pid> command.
>

Ok, we managed to do a ktrace and below is the relevant part of the log.

It looks like the ioctl(TIOCGETA)/tcgetattr was indeed succesfully
completed but the Java code then hangs (or atleast we are
not able to see anything on the Java side of things, evidently
something keeps causing entries in the log.

Can anyone hazard an opinion on what the log is showing?

br Kusti


22683 100350 java     RET   F64  sigaction 0
22683 100350 java     CALL  F64
sigaction(SIGSEGV,0x7fffffbfe030,0x7fffffbfe010)
22683 100350 java     RET   F64  sigaction 0
22683 100350 java     CALL  F64
sigaction(SIGBUS,0x7fffffbfe030,0x7fffffbfe010)
22683 100350 java     RET   F64  sigaction 0
22683 100350 java     CALL  F64  sigprocmask(SIG_BLOCK,0,0x80fb60228)
22683 100350 java     RET   F64  sigprocmask 0
22683 100350 java     CALL  F64
sigaction(SIGSEGV,0x7fffffbfe030,0x7fffffbfe010)
22683 100350 java     RET   F64  sigaction 0
22683 100350 java     CALL  F64
sigaction(SIGBUS,0x7fffffbfe030,0x7fffffbfe010)
22683 100350 java     RET   F64  sigaction 0
22683 100350 java     CALL  F64
sigaction(SIGSEGV,0x7fffffbfe100,0x7fffffbfe0e0)
22683 100350 java     RET   F64  sigaction 0
22683 100350 java     CALL  F64
sigaction(SIGBUS,0x7fffffbfe100,0x7fffffbfe0e0)
22683 100350 java     RET   F64  sigaction 0
22683 100350 java     CALL  F64  sigprocmask(SIG_BLOCK,0,0x80fb60228)
22683 100350 java     RET   F64  sigprocmask 0
22683 100350 java     CALL  F64  ioctl(0x8,TIOCGETA,0x80fe4f940)
22683 100350 java     RET   F64  ioctl 0
22683 100350 java     CALL  F64
sigaction(SIGSEGV,0x7fffffbfe100,0x7fffffbfe0e0)
22683 100350 java     RET   F64  sigaction 0
22683 100350 java     CALL  F64
sigaction(SIGBUS,0x7fffffbfe100,0x7fffffbfe0e0)
22683 100350 java     RET   F64  sigaction 0
after which following keeps repeating endlessly:
22683 100350 java     PSIG  F64  SIGSEGV caught handler=3D0x80fa4f9f0
mask=3D0x4 code=3D0x1
22683 100350 java     CALL  F64  sigprocmask(SIG_SETMASK,0x7fffffbfde30,0)
22683 100350 java     RET   F64  sigprocmask 0
22683 100350 java     CALL  F64
sigaction(SIGSEGV,0x7fffffbfe100,0x7fffffbfe0e0)
22683 100350 java     RET   F64  sigaction 0
22683 100350 java     CALL  F64
sigaction(SIGBUS,0x7fffffbfe100,0x7fffffbfe0e0)
22683 100350 java     RET   F64  sigaction 0
22683 100350 java     PSIG  F64  SIGSEGV caught handler=3D0x80fa4f9f0
mask=3D0x4 code=3D0x1
22683 100350 java     CALL  F64  sigprocmask(SIG_SETMASK,0x7fffffbfdca0,0)
22683 100350 java     RET   F64  sigprocmask 0
22683 100350 java     CALL  F64
sigaction(SIGSEGV,0x7fffffbfe100,0x7fffffbfe0e0)
22683 100350 java     RET   F64  sigaction 0
22683 100350 java     CALL  F64
sigaction(SIGBUS,0x7fffffbfe100,0x7fffffbfe0e0)
22683 100350 java     RET   F64  sigaction 0
22683 100350 java     PSIG  F64  SIGSEGV caught handler=3D0x80fa4f9f0
mask=3D0x4 code=3D0x1




So acting on this suggestion:
>"If ioctl(TIOCGETA) is indeed what was called, then look at the in-kernel
>backtrace of the hung thread with procstat -kk<pid>  command."

   =20
This is from an different hang, though:

procstat -kk 19315
   PID    TID COMM             TDNAME           KSTACK
19315 100112 java             - <running>
19315 100443 java             -                mi_switch+0x186
sleepq_catch_signals+0x31c sleepq_timedwait_sig+0x19 _sleep+0x2d1
do_cv_wait+0x630 __umtx_op_cv_wait+0x66 amd64_syscall+0x24f
Xfast_syscall+0xfc
19315 100519 java             -                mi_switch+0x186
sleepq_catch_signals+0x31c sleepq_wait_sig+0x16 _sleep+0x29a
do_cv_wait+0x861 __umtx_op_cv_wait+0x66 amd64_syscall+0x24f
Xfast_syscall+0xfc
19315 100622 java             -                mi_switch+0x186
sleepq_catch_signals+0x31c sleepq_wait_sig+0x16 _sleep+0x29a
do_cv_wait+0x861 __umtx_op_cv_wait+0x66 amd64_syscall+0x24f
Xfast_syscall+0xfc
19315 100645 java             -                mi_switch+0x186
sleepq_catch_signals+0x31c sleepq_wait_sig+0x16 _sleep+0x29a
do_wait+0x71a __umtx_op_wait_uint_private+0x6e amd64_syscall+0x24f
Xfast_syscall+0xfc
19315 100708 java             initial thread   mi_switch+0x186
sleepq_catch_signals+0x31c sleepq_wait_sig+0x16 _sleep+0x29a
do_wait+0x71a __umtx_op_wait+0x68 amd64_syscall+0x24f Xfast_syscall+0xfc
19315 100763 java             -                mi_switch+0x186
sleepq_catch_signals+0x31c sleepq_wait_sig+0x16 _sleep+0x29a
do_cv_wait+0x861 __umtx_op_cv_wait+0x66 amd64_syscall+0x24f
Xfast_syscall+0xfc
19315 100769 java             -                mi_switch+0x186
sleepq_catch_signals+0x31c sleepq_wait_sig+0x16 _sleep+0x29a
do_cv_wait+0x861 __umtx_op_cv_wait+0x66 amd64_syscall+0x24f
Xfast_syscall+0xfc
19315 100775 java             -                mi_switch+0x186
sleepq_catch_signals+0x31c sleepq_wait_sig+0x16 _sleep+0x29a
do_cv_wait+0x861 __umtx_op_cv_wait+0x66 amd64_syscall+0x24f
Xfast_syscall+0xfc
19315 100789 java             -                mi_switch+0x186
sleepq_catch_signals+0x31c sleepq_timedwait_sig+0x19 _sleep+0x2d1
do_cv_wait+0x630 __umtx_op_cv_wait+0x66 amd64_syscall+0x24f
Xfast_syscall+0xfc




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CBEEDDFD.389B1%kustaa.nyholm>