xboard 4.3.15 draw bug

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

xboard 4.3.15 draw bug

Post by sje »

The game:

Code: Select all

[Event "Unknown Event"]
[Site "chessclub.com"]
[Date "2009.05.23"]
[Round "6"]
[White "jsbam"]
[Black "Symbolic 2009.05.23"]
[Result "1/2-1/2"]

1 e4 e6 2 d4 d5 3 Nd2 c5 4 exd5 exd5 5 Ngf3 Nc6 6 Bb5 Bd6 7 dxc5 Bxc5 8 O-O Ne7
9 Nb3 Bd6 10 Nfd4 Bd7 11 Qh5 g6 12 Qh4 Nxd4 13 Nxd4 Qb6 14 Bxd7+ Kxd7 15 Re1 h6
16 c3 f5 17 b3 g5 18 Qh3 Bc5 19 Be3 Qg6 20 Ne6 Bd6 21 Bc5 b6 22 Bxd6 Kxd6 23
Nd4 Kd7 24 Re6 Qxe6 25 Nxe6 Kxe6 26 Re1+ Kd7 27 Qe3 Rh7 28 Qe6+ Kc7 29 Qe5+ Kc6
30 Qf6+ Kd7 31 Re5 Re8 32 f4 Kc8 33 fxg5 hxg5 34 Rxf5 Nxf5 35 Qc6+ Kd8 36 Qa8+
Kd7 37 Qxa7+ Kc6 38 Qa4+ b5 39 Qa6+ Kc7 40 Qa7+ Kc6 41 Qxh7 Nd6 42 h3 Ra8 43
Qc2 Ra7 44 Qf2 Ra3 45 Qb2 Ra5 46 b4 Ra8 47 Kh2 Ne4 48 Kg1 Kd6 49 Qc2 Ra3 50 Qe2
Kc6 51 Qh5 Rxc3 52 Qe8+ Kd6 53 Qxb5 Nf6 54 Qb6+ Rc6 55 Qe3 Ne4 56 a4 Ke6 57 Kh1
Ke5 58 Qa7 Ke6 59 Qa8 Rc3 60 Qe8+ Kf5 61 Qf8+ Nf6 62 Qf7 Ke5 63 Qe7+ Kf5 64 Qe2
Ne4 65 Qf1+ Ke6 66 Qf8 Nf6 67 Qg7 Ne4 68 Qg6+ Ke5 69 Qg7+ Kd6 70 Qf8+ Kd7 71
Qf7+ Kd6 72 Kh2 Ke5 73 Qg7+ Kd6 74 Qf8+ Ke6 75 b5 Nf6 76 Qg7 Ra3 77 Qa7 Rc3 78
Qb6+ Ke5 79 Qf2 Ne4 80 Qa7 Rb3 81 Qg7+ Kd6 82 Qf8+ Ke5 83 Qd8 Kd4 84 Qb6+ Kc4
85 Qc6+ Nc5 86 b6 Rb1 87 a5 d4 88 Qf3 Rb5 89 Qe2+ d3 90 Qa2+ Kc3 91 a6 d2 92
Qa1+ Kc2 93 Qa2+ Kc3 94 Qa3+ Kc4 95 Qa2+ Kc3 96 Qd5 Nxa6 97 Qf3+ Kb4 98 Qd3 Ka5
99 Qxd2+ Kxb6 100 Qd6+ Kb7 101 Kh1 Rb1+ 102 Kh2 Nc7 103 Qd4 Rb5 104 Qe4+ Rd5
105 Qb4+ Kc6 106 Kh1 Rd1+ 107 Kh2 Rd5 108 Qa4+ Kd6 109 Kh1 Ne6 110 Qa3+ Ke5 111
Qc3+ Rd4 112 Qf3 Ra4 113 Qf1 Rf4 114 Qd3 Rd4 115 Qc2 Kf6 116 g4 Ke7 117 Qh7+
Ke8 118 Qh8+ Ke7 119 Qe5 Rd1+ 120 Kh2 Rd2+ 121 Kh1 Rd3 122 Kg2 Rd2+ 123 Kg1
Rd1+ 124 Kg2 Rd2+ 125 Kf1 Rd1+ 126 Kf2 Rd3 127 Qh8 Kd6 128 Kg1 Rd1+ 129 Kh2
Rd2+ 130 Kg1 Rd1+ 131 Kf2 Rd3 132 Kf1 Rb3 133 Kg1 Kd5 134 Qh7 Kd6 135 Kh1 Nf4
136 Qh6+ Ne6 137 Qh8 Ra3 138 Qb8+ Kc6 139 Qh8 Kd5 140 Qh7 Kd6 141 Kg1 Ra1+ 142
Kh2 Ra2+ 143 Kg1 Ra1+ 144 Kf2 Ra3 145 Kf1 Nf4 146 Qh6+ Ne6 147 Qh8 Kd7 148 Kg1
Ke7 149 Kh1 Re3 150 Qh7+ Kd6 151 Qh8 Ke7 152 Kg1 Ra3 153 Qh7+ Kd6 154 Qh8 Ke7
1/2-1/2
The repetition:

Code: Select all

2009.05.24 01:15:24.266 FEN: 8/8/PP6/1rn3p1/8/2k4P/Q2p2PK/8 w - - 0 92
2009.05.24 01:15:27.385 FEN: 8/8/PP6/1rn3p1/8/2k4P/Q2p2PK/8 w - - 4 94
2009.05.24 01:15:29.087 FEN: 8/8/PP6/1rn3p1/8/2k4P/Q2p2PK/8 w - - 8 96
Symbolic's log, playing Black, for the 95th move:

Code: Select all

2009.05.24 01&#58;15&#58;28.603 < time 3500
2009.05.24 01&#58;15&#58;28.604 < otim 800
2009.05.24 01&#58;15&#58;28.605 < usermove Qa2+
2009.05.24 01&#58;15&#58;28.605 Playing&#58; 95 Qa2+
2009.05.24 01&#58;15&#58;28.605 FEN&#58; 8/8/PP6/1rn3p1/2k5/7P/Q2p2PK/8 b - - 7 95
2009.05.24 01&#58;15&#58;28.605 CC&#58; &#91;000&#58;00&#58;00&#58;07.998 B 000&#58;00&#58;00&#58;34.999&#93;
2009.05.24 01&#58;15&#58;28.611 > 1 0 0 1 95... Kc3
2009.05.24 01&#58;15&#58;28.611 > 2 0 0 7 95... Kc3
2009.05.24 01&#58;15&#58;28.614 > 3 0 0 38 95... Kc3
2009.05.24 01&#58;15&#58;28.616 > 4 0 0 160 95... Kc3
2009.05.24 01&#58;15&#58;28.618 > 5 0 0 597 95... Kc3
2009.05.24 01&#58;15&#58;28.622 > 6 0 0 2156 95... Kc3
2009.05.24 01&#58;15&#58;28.629 > 7 0 1 9497 95... Kc3
2009.05.24 01&#58;15&#58;28.652 > 8 0 3 36446 95... Kc3
2009.05.24 01&#58;15&#58;28.741 > 9 0 12 149786 95... Kc3
2009.05.24 01&#58;15&#58;29.079 Sts&#58; LimitCheck
2009.05.24 01&#58;15&#58;29.079 Nodes&#58; 571,123   Time&#58; 0.463   Freq&#58; 1.23196e+06   Period&#58; 8.11717e-07
2009.05.24 01&#58;15&#58;29.086 Analysis&#58; &#91;Even/9/149,786&#93; 95... Kc3
2009.05.24 01&#58;15&#58;29.087 Playing&#58; 95... Kc3
2009.05.24 01&#58;15&#58;29.087 FEN&#58; 8/8/PP6/1rn3p1/8/2k4P/Q2p2PK/8 w - - 8 96
2009.05.24 01&#58;15&#58;29.087 CC&#58; &#91;000&#58;00&#58;00&#58;07.998   000&#58;00&#58;00&#58;34.518&#93;
2009.05.24 01&#58;15&#58;29.087 > tellall &#91;Even/9/149,786&#93; 95... Kc3
2009.05.24 01&#58;15&#58;29.087 > move Kc3
2009.05.24 01&#58;15&#58;29.087 > 1/2-1/2 &#123;Black draws by position repetition&#125;
At this point, the terminal window has:

Code: Select all

 aics% Sending draw offer.
The bug:

Symbolic is not sending a draw OFFER. In fact, there currently is no code in the program to send a draw OFFER. Symbolic is sending a draw CLAIM. How did this CLAIM get changed into an OFFER?
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Re: xboard 4.3.15 draw bug

Post by sje »

Addenda: For some reason, the SECOND valid draw claim in the game worked:

Code: Select all

2009.05.24 01&#58;16&#58;10.087 < time 1100
2009.05.24 01&#58;16&#58;10.088 < otim 1
2009.05.24 01&#58;16&#58;10.089 < usermove Qh8
2009.05.24 01&#58;16&#58;10.089 Playing&#58; 154 Qh8
2009.05.24 01&#58;16&#58;10.089 FEN&#58; 7Q/8/3kn3/6p1/6P1/r6P/8/6K1 b - - 76 154
2009.05.24 01&#58;16&#58;10.089 CC&#58; &#91;000&#58;00&#58;00&#58;00.008 B 000&#58;00&#58;00&#58;10.999&#93;
2009.05.24 01&#58;16&#58;10.102 > 1 0 0 1 154... Ke7
2009.05.24 01&#58;16&#58;10.102 > 2 0 0 30 154... Ke7
2009.05.24 01&#58;16&#58;10.107 > 3 0 0 178 154... Ke7
2009.05.24 01&#58;16&#58;10.112 > 4 0 0 989 154... Ke7
2009.05.24 01&#58;16&#58;10.122 > 5 0 1 4393 154... Ke7
2009.05.24 01&#58;16&#58;10.143 > 6 0 3 19679 154... Ke7
2009.05.24 01&#58;16&#58;10.202 Sts&#58; LimitCheck
2009.05.24 01&#58;16&#58;10.202 Nodes&#58; 82,306   Time&#58; 0.086   Freq&#58; 952131   Period&#58; 1.05028e-06
2009.05.24 01&#58;16&#58;10.210 Analysis&#58; &#91;Even/6/19,679&#93; 154... Ke7
2009.05.24 01&#58;16&#58;10.210 > tellall &#91;Even/6/19,679&#93; 154... Ke7
2009.05.24 01&#58;16&#58;10.210 Playing&#58; 154... Ke7
2009.05.24 01&#58;16&#58;10.210 FEN&#58; 7Q/4k3/4n3/6p1/6P1/r6P/8/6K1 w - - 77 155
2009.05.24 01&#58;16&#58;10.210 CC&#58; &#91;000&#58;00&#58;00&#58;00.008   000&#58;00&#58;00&#58;10.879&#93;
2009.05.24 01&#58;16&#58;10.211 > move Ke7
2009.05.24 01&#58;16&#58;10.211 > 1/2-1/2 &#123;Black draws by position repetition&#125;
2009.05.24 01&#58;16&#58;10.376 < result 1/2-1/2 &#123;Game drawn by repetition&#125;
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Also, time/otim upward rounding

Post by sje »

Also, the time values given with the time/otim inputs to the local engine always seem to be rounded up to the nearest multiple of 100 centiseconds.

The one exception is where the opponent is out of time; in this case the suspicious value of one centisecond is sent with the otim input to the local engine.
krazyken

Re: xboard 4.3.15 draw bug

Post by krazyken »

ICS servers do not have a different command for offer vs claim draw. But as to why the first repetition didn't get claimed, That would probably be a bug somewhere. Does your log show if the draw was sent to the server before or after you moved?
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Re: xboard 4.3.15 draw bug

Post by sje »

krazyken wrote:ICS servers do not have a different command for offer vs claim draw. But as to why the first repetition didn't get claimed, That would probably be a bug somewhere. Does your log show if the draw was sent to the server before or after you moved?
There was never any "draw" sent by Symbolic to xboard.

In both repetitions, the move was sent (from Symbolic to xboard) first and was immediately (i.e.; less than one millisecond later) followed by the 1/2-1/2 claim (again, from Symbolic to xboard). Symbolic has no way to log the data flow between xboard and the server. Only the terminal window showed the "draw offer sent" message and I can't say if that was sent before or after Symbolic's draw claim.
krazyken

Re: xboard 4.3.15 draw bug

Post by krazyken »

sje wrote:
krazyken wrote:ICS servers do not have a different command for offer vs claim draw. But as to why the first repetition didn't get claimed, That would probably be a bug somewhere. Does your log show if the draw was sent to the server before or after you moved?
There was never any "draw" sent by Symbolic to xboard.

In both repetitions, the move was sent (from Symbolic to xboard) first and was immediately (i.e.; less than one millisecond later) followed by the 1/2-1/2 claim (again, from Symbolic to xboard). Symbolic has no way to log the data flow between xboard and the server. Only the terminal window showed the "draw offer sent" message and I can't say if that was sent before or after Symbolic's draw claim.
I guess I wasn't clear enough, when on an ICS, 1/2-1/2 is treated exactly the same as "draw". As for the timing of the event, you'd have to check the xboard debug log. What I suspect is that if the server received the move 96. Qd5 before your claim reached the server, your claim was no longer valid. There is a race condition here, and I believe that the way ICC handles it is you must make the draw claim before your move. There are a few recent marathon threads discussing the intricacies of claiming a draw in xboard. Including some recently changed behavior in Xboard.
http://www.talkchess.com/forum/viewtopic.php?t=27612
http://www.talkchess.com/forum/viewtopic.php?t=27570
http://www.talkchess.com/forum/viewtopic.php?t=27600
User avatar
hgm
Posts: 27795
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: xboard 4.3.15 draw bug

Post by hgm »

Kenny is absolutely right.

When playing on an ICS, XBoard has a passive function. It is the ICS that controls the scoresheet, and if XBoard would say things to the ICS like "the game is done and I have won", the ICS would simply forfeit you on time, and your "win" would show uplike a big fat zero in the ICS records.

So all XBoard can do is make kind requests to the ICS. If your engine claims a draw, it cannot terminate the game by itself, but forwards the claim to the ICS. The command in ICS protocol for this is "draw". This is the same command as ICS protocol uses for _offering_ draws. And the ICS can refuse such claims, even when they are perfectly valid, when you send them after your move. Even if you send them within 1 msec after your move. Becasue it is not at all sure that the ICS will _receive_ that command then within 1 msec after your move. The opponent might already have moved by the time the ICS receives your claim.

The workaround the ICS provides for this is to send "draw" before a move that draws. This is treated as an offer before the move, but if the opponent refuses the offer it is still claimed as a draw afterwards.

To have your engine send "draw" to the ICS, you can use "offer draw" (recommeded) or "tellics draw" in WB protocol.

About the time:

I think the ICS only tells you the time left on your clock in seconds. Again, there is not much XBoard can do about this.
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Re: xboard 4.3.15 draw bug

Post by sje »

I think the core problem here is that we -- chess program authors -- are expecting too much of an ICS that has been designed for human play.
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: xboard 4.3.15 draw bug

Post by bob »

sje wrote:The game:

Code: Select all

&#91;Event "Unknown Event"&#93;
&#91;Site "chessclub.com"&#93;
&#91;Date "2009.05.23"&#93;
&#91;Round "6"&#93;
&#91;White "jsbam"&#93;
&#91;Black "Symbolic 2009.05.23"&#93;
&#91;Result "1/2-1/2"&#93;

1 e4 e6 2 d4 d5 3 Nd2 c5 4 exd5 exd5 5 Ngf3 Nc6 6 Bb5 Bd6 7 dxc5 Bxc5 8 O-O Ne7
9 Nb3 Bd6 10 Nfd4 Bd7 11 Qh5 g6 12 Qh4 Nxd4 13 Nxd4 Qb6 14 Bxd7+ Kxd7 15 Re1 h6
16 c3 f5 17 b3 g5 18 Qh3 Bc5 19 Be3 Qg6 20 Ne6 Bd6 21 Bc5 b6 22 Bxd6 Kxd6 23
Nd4 Kd7 24 Re6 Qxe6 25 Nxe6 Kxe6 26 Re1+ Kd7 27 Qe3 Rh7 28 Qe6+ Kc7 29 Qe5+ Kc6
30 Qf6+ Kd7 31 Re5 Re8 32 f4 Kc8 33 fxg5 hxg5 34 Rxf5 Nxf5 35 Qc6+ Kd8 36 Qa8+
Kd7 37 Qxa7+ Kc6 38 Qa4+ b5 39 Qa6+ Kc7 40 Qa7+ Kc6 41 Qxh7 Nd6 42 h3 Ra8 43
Qc2 Ra7 44 Qf2 Ra3 45 Qb2 Ra5 46 b4 Ra8 47 Kh2 Ne4 48 Kg1 Kd6 49 Qc2 Ra3 50 Qe2
Kc6 51 Qh5 Rxc3 52 Qe8+ Kd6 53 Qxb5 Nf6 54 Qb6+ Rc6 55 Qe3 Ne4 56 a4 Ke6 57 Kh1
Ke5 58 Qa7 Ke6 59 Qa8 Rc3 60 Qe8+ Kf5 61 Qf8+ Nf6 62 Qf7 Ke5 63 Qe7+ Kf5 64 Qe2
Ne4 65 Qf1+ Ke6 66 Qf8 Nf6 67 Qg7 Ne4 68 Qg6+ Ke5 69 Qg7+ Kd6 70 Qf8+ Kd7 71
Qf7+ Kd6 72 Kh2 Ke5 73 Qg7+ Kd6 74 Qf8+ Ke6 75 b5 Nf6 76 Qg7 Ra3 77 Qa7 Rc3 78
Qb6+ Ke5 79 Qf2 Ne4 80 Qa7 Rb3 81 Qg7+ Kd6 82 Qf8+ Ke5 83 Qd8 Kd4 84 Qb6+ Kc4
85 Qc6+ Nc5 86 b6 Rb1 87 a5 d4 88 Qf3 Rb5 89 Qe2+ d3 90 Qa2+ Kc3 91 a6 d2 92
Qa1+ Kc2 93 Qa2+ Kc3 94 Qa3+ Kc4 95 Qa2+ Kc3 96 Qd5 Nxa6 97 Qf3+ Kb4 98 Qd3 Ka5
99 Qxd2+ Kxb6 100 Qd6+ Kb7 101 Kh1 Rb1+ 102 Kh2 Nc7 103 Qd4 Rb5 104 Qe4+ Rd5
105 Qb4+ Kc6 106 Kh1 Rd1+ 107 Kh2 Rd5 108 Qa4+ Kd6 109 Kh1 Ne6 110 Qa3+ Ke5 111
Qc3+ Rd4 112 Qf3 Ra4 113 Qf1 Rf4 114 Qd3 Rd4 115 Qc2 Kf6 116 g4 Ke7 117 Qh7+
Ke8 118 Qh8+ Ke7 119 Qe5 Rd1+ 120 Kh2 Rd2+ 121 Kh1 Rd3 122 Kg2 Rd2+ 123 Kg1
Rd1+ 124 Kg2 Rd2+ 125 Kf1 Rd1+ 126 Kf2 Rd3 127 Qh8 Kd6 128 Kg1 Rd1+ 129 Kh2
Rd2+ 130 Kg1 Rd1+ 131 Kf2 Rd3 132 Kf1 Rb3 133 Kg1 Kd5 134 Qh7 Kd6 135 Kh1 Nf4
136 Qh6+ Ne6 137 Qh8 Ra3 138 Qb8+ Kc6 139 Qh8 Kd5 140 Qh7 Kd6 141 Kg1 Ra1+ 142
Kh2 Ra2+ 143 Kg1 Ra1+ 144 Kf2 Ra3 145 Kf1 Nf4 146 Qh6+ Ne6 147 Qh8 Kd7 148 Kg1
Ke7 149 Kh1 Re3 150 Qh7+ Kd6 151 Qh8 Ke7 152 Kg1 Ra3 153 Qh7+ Kd6 154 Qh8 Ke7
1/2-1/2
The repetition:

Code: Select all

2009.05.24 01&#58;15&#58;24.266 FEN&#58; 8/8/PP6/1rn3p1/8/2k4P/Q2p2PK/8 w - - 0 92
2009.05.24 01&#58;15&#58;27.385 FEN&#58; 8/8/PP6/1rn3p1/8/2k4P/Q2p2PK/8 w - - 4 94
2009.05.24 01&#58;15&#58;29.087 FEN&#58; 8/8/PP6/1rn3p1/8/2k4P/Q2p2PK/8 w - - 8 96
Symbolic's log, playing Black, for the 95th move:

Code: Select all

2009.05.24 01&#58;15&#58;28.603 < time 3500
2009.05.24 01&#58;15&#58;28.604 < otim 800
2009.05.24 01&#58;15&#58;28.605 < usermove Qa2+
2009.05.24 01&#58;15&#58;28.605 Playing&#58; 95 Qa2+
2009.05.24 01&#58;15&#58;28.605 FEN&#58; 8/8/PP6/1rn3p1/2k5/7P/Q2p2PK/8 b - - 7 95
2009.05.24 01&#58;15&#58;28.605 CC&#58; &#91;000&#58;00&#58;00&#58;07.998 B 000&#58;00&#58;00&#58;34.999&#93;
2009.05.24 01&#58;15&#58;28.611 > 1 0 0 1 95... Kc3
2009.05.24 01&#58;15&#58;28.611 > 2 0 0 7 95... Kc3
2009.05.24 01&#58;15&#58;28.614 > 3 0 0 38 95... Kc3
2009.05.24 01&#58;15&#58;28.616 > 4 0 0 160 95... Kc3
2009.05.24 01&#58;15&#58;28.618 > 5 0 0 597 95... Kc3
2009.05.24 01&#58;15&#58;28.622 > 6 0 0 2156 95... Kc3
2009.05.24 01&#58;15&#58;28.629 > 7 0 1 9497 95... Kc3
2009.05.24 01&#58;15&#58;28.652 > 8 0 3 36446 95... Kc3
2009.05.24 01&#58;15&#58;28.741 > 9 0 12 149786 95... Kc3
2009.05.24 01&#58;15&#58;29.079 Sts&#58; LimitCheck
2009.05.24 01&#58;15&#58;29.079 Nodes&#58; 571,123   Time&#58; 0.463   Freq&#58; 1.23196e+06   Period&#58; 8.11717e-07
2009.05.24 01&#58;15&#58;29.086 Analysis&#58; &#91;Even/9/149,786&#93; 95... Kc3
2009.05.24 01&#58;15&#58;29.087 Playing&#58; 95... Kc3
2009.05.24 01&#58;15&#58;29.087 FEN&#58; 8/8/PP6/1rn3p1/8/2k4P/Q2p2PK/8 w - - 8 96
2009.05.24 01&#58;15&#58;29.087 CC&#58; &#91;000&#58;00&#58;00&#58;07.998   000&#58;00&#58;00&#58;34.518&#93;
2009.05.24 01&#58;15&#58;29.087 > tellall &#91;Even/9/149,786&#93; 95... Kc3
2009.05.24 01&#58;15&#58;29.087 > move Kc3
2009.05.24 01&#58;15&#58;29.087 > 1/2-1/2 &#123;Black draws by position repetition&#125;
At this point, the terminal window has:

Code: Select all

 aics% Sending draw offer.
The bug:

Symbolic is not sending a draw OFFER. In fact, there currently is no code in the program to send a draw OFFER. Symbolic is sending a draw CLAIM. How did this CLAIM get changed into an OFFER?
We have been around and around this issue. There seems to be little interest in fixing the protocol to make it appear rational for both offering and claiming draws, so we are stuck with something that is clumsy.
User avatar
hgm
Posts: 27795
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: xboard 4.3.15 draw bug

Post by hgm »

I think the solution I originally proposed was quite logical. But it was rejected.

For the case at hand, (ICS play) nothng was changed, b.t.w. The problem is that the solution to the race condition you coocked up with the ICC site maintainer requires the claim to be sent before the move, which to most people is counter-intuitive. And that the ICS calls the draw claim a draw offer, and refuses it.

This is purely a problem of ICS protocol. You are barking up the wrong tree.