My favorites | Sign in
Project Home Downloads Wiki Issues Source
New issue   Search
for
  Advanced search   Search tips   Subscriptions
Issue 608: Gerrit hangs when trying to navigate with keys ('g' then 'o') to All Open Changes
1 person starred this issue and may be notified of changes. Back to list
Status:  WontFix
Owner:  ----
Closed:  Jun 2010


Sign in to add a comment
 
Project Member Reported by edwin.ke...@gmail.com, Jun 23, 2010
Gerrit hangs when trying to navigate with keys ('g' then 'o') to All Open Changes

Affected Version:
2.1.4-SNAPSHOT

What steps will reproduce the problem?
1. go to 'All merged changes' screen
2. press 'g' then 'o' 

What is the expected output? What do you see instead?
It is expected that the 'All open changes' screen is opened, instead of this Gerrit hangs.

Please provide any additional information below.
When I say that Gerrit hangs I mean that the browser Window is not reacting anymore. At the same time I can see on server side a hanging Thread.
The problem occurs with Firefox as well as with Internet Explorer.
For me the problem can be almost always reproduced, only with Internet Explorer the navigation succeeded once or twice.

Firefox:
Daemon Thread [Code server for gerrit from Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4 (.NET CLR 3.5.30729) on http://127.0.0.1:8888/?gwt.codesvr=127.0.0.1:9997 @ {$~'+T=S3TY!.u*!] (Suspended)	
	SocketInputStream.socketRead0(FileDescriptor, byte[], int, int, int) line: not available [native method]	
	SocketInputStream.read(byte[], int, int) line: 129	
	BufferedInputStream.fill() line: 218	
	BufferedInputStream.read() line: 237	
	DataInputStream.readByte() line: 248	
	BrowserChannel$Message.readMessageType(DataInputStream) line: 1131	
	BrowserChannelServer(BrowserChannel).reactToMessagesWhileWaitingForReturn(BrowserChannel$SessionHandler) line: 1702	
	BrowserChannelServer.invokeJavascript(CompilingClassLoader, JsValueOOPHM, String, JsValueOOPHM[], JsValueOOPHM) line: 165	
	ModuleSpaceOOPHM.doInvoke(String, Object, Class<?>[], Object[]) line: 120	
	ModuleSpaceOOPHM(ModuleSpace).invokeNative(String, Object, Class<?>[], Object[]) line: 507	
	ModuleSpaceOOPHM(ModuleSpace).invokeNativeObject(String, Object, Class<?>[], Object[]) line: 264	
	JavaScriptHost.invokeNativeObject(String, Object, Class<?>[], Object[]) line: 91	
	Node$.getOwnerDocument$(Node) line: not available	
	DOMImplMozilla.getAbsoluteTop(Element) line: 61	
	Element$.getAbsoluteTop$(Element) line: 166	
	AllSingleListScreen$1(NavigationTable<RowItem>).ensurePointerVisible() line: 114	
	NavigationTable$OpenKeyCommand.onKeyPress(KeyPressEvent) line: 292	
	KeyCommandSet.onKeyPress(KeyPressEvent) line: 116	
	GlobalKey$2.onKeyPress(KeyPressEvent) line: 55	
	KeyPressEvent.dispatch(KeyPressHandler) line: 70	
	KeyPressEvent.dispatch(EventHandler) line: 1	
	HandlerManager$HandlerRegistry.fireEvent(GwtEvent<H>, boolean) line: 65	
	HandlerManager$HandlerRegistry.access$1(HandlerManager$HandlerRegistry, GwtEvent, boolean) line: 53	
	HandlerManager.fireEvent(GwtEvent<?>) line: 178	
	DocWidget(Widget).fireEvent(GwtEvent<?>) line: 52	
	DomEvent<H>.fireNativeEvent(NativeEvent, HasHandlers, Element) line: 116	
	DocWidget(Widget).onBrowserEvent(Event) line: 100	
	DOM.dispatchEventImpl(Event, Element, EventListener) line: 1307	
	DOM.dispatchEvent(Event, Element, EventListener) line: 1263	
	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
	Method.invoke(Object, Object...) line: 597	
	MethodAdaptor.invoke(Object, Object...) line: 103	
	MethodDispatch.invoke(JsValue, JsValue[], JsValue) line: 71	
	OophmSessionHandler.invoke(BrowserChannel, BrowserChannel$Value, int, BrowserChannel$Value[]) line: 157	
	BrowserChannelServer(BrowserChannel).reactToMessagesWhileWaitingForReturn(BrowserChannel$SessionHandler) line: 1713	
	BrowserChannelServer.invokeJavascript(CompilingClassLoader, JsValueOOPHM, String, JsValueOOPHM[], JsValueOOPHM) line: 165	
	ModuleSpaceOOPHM.doInvoke(String, Object, Class<?>[], Object[]) line: 120	
	ModuleSpaceOOPHM(ModuleSpace).invokeNative(String, Object, Class<?>[], Object[]) line: 507	
	ModuleSpaceOOPHM(ModuleSpace).invokeNativeObject(String, Object, Class<?>[], Object[]) line: 264	
	JavaScriptHost.invokeNativeObject(String, Object, Class<?>[], Object[]) line: 91	
	Impl.apply(Object, Object, Object) line: not available	
	Impl.entry0(Object, Object, Object) line: 188	
	GeneratedMethodAccessor25.invoke(Object, Object[]) line: not available	
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
	Method.invoke(Object, Object...) line: 597	
	MethodAdaptor.invoke(Object, Object...) line: 103	
	MethodDispatch.invoke(JsValue, JsValue[], JsValue) line: 71	
	OophmSessionHandler.invoke(BrowserChannel, BrowserChannel$Value, int, BrowserChannel$Value[]) line: 157	
	BrowserChannelServer(BrowserChannel).reactToMessages(BrowserChannel$SessionHandler) line: 1668	
	BrowserChannelServer.processConnection() line: 401	
	BrowserChannelServer.run() line: 222	
	Thread.run() line: 679	
If Firefox is closed/killed the Thread that was hanging in Gerrit is released.


Internet Explorer:
Daemon Thread [Code server for gerrit from Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2) on http://127.0.0.1:8888/?gwt.codesvr=127.0.0.1:9997#all,open,n,z @ 'MD5#MF#*sP.*K\9] (Suspended)	
	SocketInputStream.socketRead0(FileDescriptor, byte[], int, int, int) line: not available [native method]	
	SocketInputStream.read(byte[], int, int) line: 129	
	BufferedInputStream.fill() line: 218	
	BufferedInputStream.read() line: 237	
	DataInputStream.readByte() line: 248	
	BrowserChannel$Message.readMessageType(DataInputStream) line: 1131	
	BrowserChannelServer(BrowserChannel).reactToMessagesWhileWaitingForReturn(BrowserChannel$SessionHandler) line: 1702	
	BrowserChannelServer.invokeJavascript(CompilingClassLoader, JsValueOOPHM, String, JsValueOOPHM[], JsValueOOPHM) line: 165	
	ModuleSpaceOOPHM.doInvoke(String, Object, Class<?>[], Object[]) line: 120	
	ModuleSpaceOOPHM(ModuleSpace).invokeNative(String, Object, Class<?>[], Object[]) line: 507	
	ModuleSpaceOOPHM(ModuleSpace).invokeNativeObject(String, Object, Class<?>[], Object[]) line: 264	
	JavaScriptHost.invokeNativeObject(String, Object, Class<?>[], Object[]) line: 91	
	DOMImplIE6(DOMImpl).getParentElement(Node) line: not available	
	Node$.getParentElement$(Node) line: 184	
	DOM.getParent(Element) line: 892	
	ChangeTable(NavigationTable<RowItem>).ensurePointerVisible() line: 113	
	NavigationTable$OpenKeyCommand.onKeyPress(KeyPressEvent) line: 292	
	KeyCommandSet.onKeyPress(KeyPressEvent) line: 116	
	GlobalKey$2.onKeyPress(KeyPressEvent) line: 55	
	KeyPressEvent.dispatch(KeyPressHandler) line: 70	
	KeyPressEvent.dispatch(EventHandler) line: 1	
	HandlerManager$HandlerRegistry.fireEvent(GwtEvent<H>, boolean) line: 65	
	HandlerManager$HandlerRegistry.access$1(HandlerManager$HandlerRegistry, GwtEvent, boolean) line: 53	
	HandlerManager.fireEvent(GwtEvent<?>) line: 178	
	DocWidget(Widget).fireEvent(GwtEvent<?>) line: 52	
	DomEvent<H>.fireNativeEvent(NativeEvent, HasHandlers, Element) line: 116	
	DocWidget(Widget).onBrowserEvent(Event) line: 100	
	DOM.dispatchEventImpl(Event, Element, EventListener) line: 1307	
	DOM.dispatchEvent(Event, Element, EventListener) line: 1263	
	GeneratedMethodAccessor63.invoke(Object, Object[]) line: not available	
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
	Method.invoke(Object, Object...) line: 597	
	MethodAdaptor.invoke(Object, Object...) line: 103	
	MethodDispatch.invoke(JsValue, JsValue[], JsValue) line: 71	
	OophmSessionHandler.invoke(BrowserChannel, BrowserChannel$Value, int, BrowserChannel$Value[]) line: 157	
	BrowserChannelServer(BrowserChannel).reactToMessagesWhileWaitingForReturn(BrowserChannel$SessionHandler) line: 1713	
	BrowserChannelServer.invokeJavascript(CompilingClassLoader, JsValueOOPHM, String, JsValueOOPHM[], JsValueOOPHM) line: 165	
	ModuleSpaceOOPHM.doInvoke(String, Object, Class<?>[], Object[]) line: 120	
	ModuleSpaceOOPHM(ModuleSpace).invokeNative(String, Object, Class<?>[], Object[]) line: 507	
	ModuleSpaceOOPHM(ModuleSpace).invokeNativeObject(String, Object, Class<?>[], Object[]) line: 264	
	JavaScriptHost.invokeNativeObject(String, Object, Class<?>[], Object[]) line: 91	
	Impl.apply(Object, Object, Object) line: not available	
	Impl.entry0(Object, Object, Object) line: 188	
	GeneratedMethodAccessor57.invoke(Object, Object[]) line: not available	
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
	Method.invoke(Object, Object...) line: 597	
	MethodAdaptor.invoke(Object, Object...) line: 103	
	MethodDispatch.invoke(JsValue, JsValue[], JsValue) line: 71	
	OophmSessionHandler.invoke(BrowserChannel, BrowserChannel$Value, int, BrowserChannel$Value[]) line: 157	
	BrowserChannelServer(BrowserChannel).reactToMessages(BrowserChannel$SessionHandler) line: 1668	
	BrowserChannelServer.processConnection() line: 401	
	BrowserChannelServer.run() line: 222	
	Thread.run() line: 679	
For me the Internet Exploror detects after some while that there is a slow running script and asks if it should be aborted. If abort is accepted the browser comes back to life however the Thread in Gerrit is still hanging.

Jun 23, 2010
Project Member #1 edwin.ke...@gmail.com
I just noticed that the timing for pressing 'g' then 'o' seems to be important for reproducing the problem. If to press 'g' and 'o' very quickly one after another the navigation seems to be working fine, however if to press 'g', wait a second (or even longer) and then press 'o' the described problem occurs.
Jun 24, 2010
#2 sop@google.com
This is the GWT hosted mode debugger, which is
doing some really weird stuff with the JS event
processing in the browser in order to run Java
code during a JavaScript event.  I'm almost not
surprised something broke here.

I'm not likely to spend time trying to track it
down.  The 'g-then-o' code works by scheduling a
timer for 250 milliseconds that captures following
keystrokes looking for the 'o' match.  If one isn't
received, its supposed to reset the keyboard to the
root level map.

What is probably occurring here is the timer gets
stuck somewhere between the browser code and the
Java backend that is running the emulated UI, and
the whole thing just deadlocks.  More than likely
this is a bug in Google Web Tookit.

Just don't use 'g-then-o' in hosted debug mode; if
you need to test that stuff compile to JavaScript
and run under the real Gerrit daemon, without the
GWT hosted mode browser hacks.
Status: WontFix
Sign in to add a comment

Powered by Google Project Hosting