Strange behaviour with ptmx file descriptors
Nacho del Rey
odelreym at gmail.com
Sat Apr 16 19:11:32 AEST 2016
Hi again
I think I didn't explain the problem properly
I'll try to explain it using an example of what it happened last time in
Feb, the 23th
This is the point of view of the C application, running in the linux box,
when answering to the client:
4911 1456244042.324336 write(1, "\7", 1) = 1
4911 1456244042.324610 write(1, "\33[1;16H \33[6;6H_______\33[7;1H
-INFORME CANT. RECOGIDA-\33[7;26H", 66) = 66
This is the point of view of the ssh process in the linux box:
6647 1456244042.323463 select(14, [3 9 13], [], NULL, {900, 0}) = 1 (in
[13], left {899, 998569})
6647 1456244042.324971 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
6647 1456244042.325010 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
6647 1456244042.325033 read(13, "\7\33[1;16H
\33[6;6H_______\33[7;1H -INFORME CANT. RECOGIDA-\33[7;26H", 16384) = 67
6647 1456244042.325126 select(14, [3 9], [3], NULL, {900, 0}) = 1 (out
[3], left {899, 999998})
6647 1456244042.325203 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
6647 1456244042.325240 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
6647 1456244042.325264 write(3,
"P\247\244}\277\322\260\21\3314\7\227\223~\317\360\35\334\232\372\237\250\320\312\1;\25\37\23\363\363O&0\355i{zUbr\365,\362yyl\222",
48) = 48
6647 1456244042.325310 select(14, [3 9], [], NULL, {900, 0}) = 1 (in [3],
left {892, 12016}) <<-- where id fd#13 ?
This is the point of view of the ssh client:
74539.285 0BE6003A I-ITE 38:VT220_IO:
tohost:0x31='1'
74539.300 0BE6003A I-ITE 52:ANSITERM:
charin:<ASCII(27)>
74539.300 0BE6003A I-ITE 53:ANSITERM:
charin:<[>
74539.300 0BE6003A I-ITE 54:ANSITERM:
charin:<1>
74539.300 0BE6003A I-ITE 55:ANSITERM:
charin:<;>
74539.300 0BE6003A I-ITE 56:ANSITERM:
charin:<2>
74539.300 0BE6003A I-ITE 57:ANSITERM:
charin:<3>
74539.300 0BE6003A I-ITE 58:ANSITERM:
charin:<H>
74539.301 0BE6003A I-ITE 59:ANSITERM:
charin:<1>
74539.301 0BE6003A I-ITE 63:ANSITERM:
charin:<ASCII(27)>
74539.301 0BE6003A I-ITE 64:ANSITERM:
charin:<[>
74539.301 0BE6003A I-ITE 65:ANSITERM:
charin:<1>
74539.301 0BE6003A I-ITE 66:ANSITERM:
charin:<;>
74539.302 0BE6003A I-ITE 67:ANSITERM:
charin:<2>
74539.302 0BE6003A I-ITE 68:ANSITERM:
charin:<4>
74539.302 0BE6003A I-ITE 69:ANSITERM:
charin:<H>
74539.302 0BE6003A I-ITE 70:ANSITERM:
charin:<ASCII(7)>
74539.346 0BE6003A I-ITE 71:ANSITERM:
charin:<ASCII(27)>
74539.347 0BE6003A I-ITE 72:ANSITERM:
charin:<[>
74539.347 0BE6003A I-ITE 73:ANSITERM:
charin:<1>
74539.347 0BE6003A I-ITE 74:ANSITERM:
charin:<;>
74539.347 0BE6003A I-ITE 75:ANSITERM:
charin:<1>
74539.347 0BE6003A I-ITE 76:ANSITERM:
charin:<6>
74539.347 0BE6003A I-ITE 77:ANSITERM:
charin:<H>
74539.347 0BE6003A I-ITE 78:ANSITERM:
charin:< >
74539.348 0BE6003A I-ITE 82:ANSITERM:
charin:< >
74539.348 0BE6003A I-ITE 86:ANSITERM:
charin:< >
74547.277 0BE6003A I-ITE 97:VT220_IO:
tohost:0x08='.' <-- here the client stops receiving data
74547.779 0BE6003A I-ITE 08:VT220_IO:
tohost:0x08='.'
74547.821 0BE6003A I-ITE 19:VT220_IO:
tohost:0x08='.'
74547.864 0BE6003A I-ITE 30:VT220_IO:
tohost:0x08='.'
74547.907 0BE6003A I-ITE 41:VT220_IO:
tohost:0x08='.'
74547.950 0BE6003A I-ITE 52:VT220_IO:
tohost:0x08='.'
74547.993 0BE6003A I-ITE 63:VT220_IO:
tohost:0x08='.'
74548.036 0BE6003A I-ITE 74:VT220_IO:
tohost:0x08='.'
And when it happens, the ssh client still working properly, it continues
sending keystrokes to the the application, the application receives these
keystrokes, it answers to the client, but the answer is not yet received by
the sshd process (so it seems the application is frozen... when it is not
¿true?)
One time, the operator tried to reset the connection from the ssh client,
but no way
The C program works properly thru telnet.. no incident has been reported
ever
I hope this information helps
Many thanks
Regards
Nacho.
2016-04-15 23:53 GMT+02:00 Ángel González <keisial at gmail.com>:
> El 15/04/16 11:28, Nacho del Rey escribió:
>
> Hi Angel and many thanks for your answer
>
> The application still sending & receiving data
> .- strace over the application:
>
> I asked for the corresponding strace of the client ssh, where the data
> should have been received and printed to the console.
>
> The strange thing is all file descriptors of all processes are in place
> but it seems for any strange reason, something happen to fd#13 ( C Program
> fd #1 --> ssd read fd #13) because it disappears from the select call (it
> won't be available in the read fd set ever)
>
> Interesting. I wonder if that's expected and sshd waits for acknowledgment
> from the remote ssh before reading again.
>
>
> Also, seems you missed this suggestion:
>
> What's the terminal emulator used in the client side? Does resetting it
>> (from a menu option) make it receive the server output again?
>>
>> Cheers
>>
>
> Best regards
>
>
More information about the openssh-unix-dev
mailing list