Community
Participate
Working Groups
Reproducible with CVS HEAD If an RWT application throws an exception from within readAndDispatch (i.e. in a listener), the session is left stale and the exception is propagated to the servlet engine. This usually results in an HTTP 500 error page being shown. Infrequently, the exception is swallowed and an empty response is delivered to the client. This only applies when running RWT-only, i.e. no JFace/Workbench or other error handling code is present. When an exception is thrown from the UIThread, it is stored as an attribute in the state-info (IServiceStateInfo) for further processing and the UIThread terminates. Later on, this state-info attribute is read by the request-thread and propagated to the servlet engine. Currently, access to the state-info attribute is unsynchronized which most probably is the reason for this bug.
Created attachment 171783 [details] Propsed Fix Protects access to ServiceStateInfo members with synchronized blocks
Created attachment 171976 [details] Bugfix This patch keeps together exception handling (putting the throwable on service-state-info) and switchThread in one sync block.
Applied patch #2 to CVS HEAD
Applied patch #2 to 1.3 Maintenance branch