Well, this happens sometimes in my application, but after a server
restart it happens more often.
This happens on IE6 , using a SSL connection (don't know if that is
relevant, but IE6 sucks when it comes to SSL).
The request is twice the same, I'm just calling a method with this signature:
public void login(String pContextId, Long pGroupId, Long pInstance,
String pUsername, String pPassword, AsyncCallback pCallback);
The problem is that I sometimes have this with other RPC calls
intiated by a timer. In my case if this timer is checking the state of
the user on the server and if that fails we assume that the server has
logged out the user and we move back to the login screen.
I'll see if I can create a simple repro case, but it might just be a
result of a IE6 bug somehow ? Multiple people have reported similar
stacktraces and I have investigated my code (I try to assume that
every bug is mine), but I don't see anything wrong, except for the
request failing on the server side... I'll try and debug on the server
side to see what the payload is when it crashes, maybe that could give
a hint.
David.
I managed to get it reproduced while using a debugger on the application server.
I noticed that the encodedToken variable holds something that ends with:
encodedTokens:
[239]= ? [\\uffff]
[240]= d [\\u0064]
[241]= e [\\u0065]
[242]= m [\\u006d]
[243]= o [\\u006f]
[244]= ? [\\uffff]
[245]= \f [\\u000c]
[246]= 0 [\\u0030]
[247]= 9 [\\u0039]
[248]= [\\u000e]
But the tokenList stops right after the entry "demo":
[3, 0, 10, https://behw1348.swift.corp/swp/group/browse/,
4FAB7CBBD3A32A92C0873AF4B274547A,
com.swift.gwt.login.client.service.GroupLoginService, login,
java.lang.String, java.lang.Long,
644416ba-e0a3-47d6-bc8a-964f9ee6a40b, java.lang.Long/4227064769, demo]
So indeed the out of bounds happens because the code is expecting a 10th field.
Could it be a coincidence that the last field, missing from the
request is an obfuscated password ? Could it be that not all
characters are correctly transported ? The obfuscation is different on
every request so that explains why it does not happen always.
Is this a bug in my code ?
David