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>