[undertow-dev] Deadlock in JSP page on Wilflfy 8.0 Alpha 4 with umlauts

Wolfgang Knauf wolfgang.knauf at gmx.de
Wed Aug 28 16:28:24 EDT 2013


Hi all,

hope this is the right place and the correct component to post a 
possible Undertow bug:
I have a simple EAR application, used to test the JavaEE feature of a 
one-to-many-relationship. It contains an EJB jar and a WAR file, bundled 
in an EAR file.

Whenever I add an umlaut in an input field and submit the form, WildFly 
hangs up while processing the request to display the result page (which 
should display a list of my entities). As this happens when generating 
the JSP page, I assume an Undertow issue.

To reproduce:
1) deploy "KuchenZutat.ear" to WildFly (it uses the 
"java:jboss/datasources/ExampleDS", so no configuration changes needed).
2) browse to "http://localhost:8080/KuchenZutatWeb/"
3) Klick "Neu"
4) enter something with an umlaut, e.g. "Käsekuchen"
5) click OK
Now the server hangs.

It works when avoiding umlauts.

Here are two stack traces, which I took by debugging the server with 
Eclipse and breaking into debugger at random times. Note that the thread 
name is different in the two stack traces - I took them at different 
server runs.
"CoderResult.unmappableForLength()" seems to be the place for the 
endless loop.


Thread [default task-3] (Suspended)	
	owns: CoderResult$2  (id=285)	
	HashMap<K,V>.hash(Object) line: not available	
	HashMap<K,V>.getEntry(Object) line: not available	
	HashMap<K,V>.get(Object) line: not available	
	CoderResult$2(CoderResult$Cache).get(int) line: not available	
	CoderResult$Cache.access$200(CoderResult$Cache, int) line: not available	
	CoderResult.unmappableForLength(int) line: not available	
	Surrogate$Parser.unmappableResult() line: not available	
	ISO_8859_1$Encoder.encodeBufferLoop(CharBuffer, ByteBuffer) line: not 
available	
	ISO_8859_1$Encoder.encodeLoop(CharBuffer, ByteBuffer) line: not available	
	ISO_8859_1$Encoder(CharsetEncoder).encode(CharBuffer, ByteBuffer, 
boolean) line: not available	
	ServletPrintWriter.write(CharBuffer) line: 58	
	ServletPrintWriter.write(char[], int, int) line: 76	
	ServletPrintWriterDelegate.write(char[], int, int) line: 96	
	JspWriterImpl.flushBuffer() line: 120	
	PageContextImpl.release() line: 188	
	JspFactoryImpl.internalReleasePageContext(PageContext) line: 115	
	JspFactoryImpl.releasePageContext(PageContext) line: 74	
	index.jsp line: not available	
	index_jsp(HttpJspBase).service(HttpServletRequest, HttpServletResponse) 
line: 69	
	index_jsp(HttpServlet).service(ServletRequest, ServletResponse) line: 790	
	JspServletWrapper.service(HttpServletRequest, HttpServletResponse, 
boolean) line: 365	
	JspServlet.serviceJspFile(HttpServletRequest, HttpServletResponse, 
String, Throwable, boolean) line: 321	
	JspServlet.service(HttpServletRequest, HttpServletResponse) line: 254	
	JspServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 790	
	ServletHandler.handleRequest(HttpServerExchange) line: 87	
	FilterHandler.handleRequest(HttpServerExchange) line: 82	
	ServletSecurityRoleHandler.handleRequest(HttpServerExchange) line: 54	
	ServletDispatchingHandler.handleRequest(HttpServerExchange) line: 36	
	SecurityContextAssociationHandler.handleRequest(HttpServerExchange) 
line: 78	
	PredicateHandler.handleRequest(HttpServerExchange) line: 25	
	PredicateHandler.handleRequest(HttpServerExchange) line: 25	
	ServletInitialHandler.dispatchRequest(HttpServerExchange, 
ServletRequestContext, ServletChain, DispatcherType) line: 196	
	ServletInitialHandler.dispatchToPath(HttpServerExchange, 
ServletPathMatch, DispatcherType) line: 139	
	RequestDispatcherImpl.forward(ServletRequest, ServletResponse) line: 156	
	KuchenEdit.jsp line: 40	
	KuchenEdit_jsp(HttpJspBase).service(HttpServletRequest, 
HttpServletResponse) line: 69	
	KuchenEdit_jsp(HttpServlet).service(ServletRequest, ServletResponse) 
line: 790	
	JspServletWrapper.service(HttpServletRequest, HttpServletResponse, 
boolean) line: 365	
	JspServlet.serviceJspFile(HttpServletRequest, HttpServletResponse, 
String, Throwable, boolean) line: 321	
	JspServlet.service(HttpServletRequest, HttpServletResponse) line: 254	
	JspServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 790	
	ServletHandler.handleRequest(HttpServerExchange) line: 87	
	FilterHandler$FilterChainImpl.doFilter(ServletRequest, ServletResponse) 
line: 130	
	JsrWebSocketFilter.doFilter(ServletRequest, ServletResponse, 
FilterChain) line: 136	
	ManagedFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 
line: 56	
	FilterHandler$FilterChainImpl.doFilter(ServletRequest, ServletResponse) 
line: 132	
	JsrWebSocketFilter.doFilter(ServletRequest, ServletResponse, 
FilterChain) line: 136	
	ManagedFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 
line: 56	
	FilterHandler$FilterChainImpl.doFilter(ServletRequest, ServletResponse) 
line: 132	
	FilterHandler.handleRequest(HttpServerExchange) line: 85	
	ServletSecurityRoleHandler.handleRequest(HttpServerExchange) line: 56	
	ServletDispatchingHandler.handleRequest(HttpServerExchange) line: 36	
	SecurityContextAssociationHandler.handleRequest(HttpServerExchange) 
line: 78	
	SSLInformationAssociationHandler.handleRequest(HttpServerExchange) 
line: 113	
	AuthenticationCallHandler.handleRequest(HttpServerExchange) line: 52	
	ServletConfidentialityConstraintHandler(AbstractConfidentialityHandler).handleRequest(HttpServerExchange) line: 45	
	CachedAuthenticatedSessionHandler.handleRequest(HttpServerExchange) 
line: 65	
	SecurityInitialHandler.handleRequest(HttpServerExchange) line: 70	
	PredicateHandler.handleRequest(HttpServerExchange) line: 25	
	SecurityContextCreationHandler.handleRequest(HttpServerExchange) line: 54	
	PredicateHandler.handleRequest(HttpServerExchange) line: 25	
	ServletInitialHandler.handleFirstRequest(HttpServerExchange, 
ServletChain, ServletRequestContext, ServletRequest, ServletResponse) 
line: 207	
	ServletInitialHandler.dispatchRequest(HttpServerExchange, 
ServletRequestContext, ServletChain, DispatcherType) line: 194	
	ServletInitialHandler.access$000(ServletInitialHandler, 
HttpServerExchange, ServletRequestContext, ServletChain, DispatcherType) 
line: 72	
	ServletInitialHandler$1.handleRequest(HttpServerExchange) line: 128	
	HttpHandlers.executeRootHandler(HttpHandler, HttpServerExchange, 
boolean) line: 36	
	HttpServerExchange$1.run() line: 628	
	XnioWorker$TaskPool(ThreadPoolExecutor).runWorker(ThreadPoolExecutor$Worker) line: not available	
	ThreadPoolExecutor$Worker.run() line: not available	
	Thread.run() line: not available	






Thread [default task-8] (Suspended)	
	CoderResult$Cache.access$200(CoderResult$Cache, int) line: not available	
	CoderResult.unmappableForLength(int) line: not available	
	Surrogate$Parser.unmappableResult() line: not available	
	ISO_8859_1$Encoder.encodeBufferLoop(CharBuffer, ByteBuffer) line: not 
available	
	ISO_8859_1$Encoder.encodeLoop(CharBuffer, ByteBuffer) line: not available	
	ISO_8859_1$Encoder(CharsetEncoder).encode(CharBuffer, ByteBuffer, 
boolean) line: not available	
	ServletPrintWriter.write(CharBuffer) line: 58	
	ServletPrintWriter.write(char[], int, int) line: 76	
	ServletPrintWriterDelegate.write(char[], int, int) line: 96	
	JspWriterImpl.flushBuffer() line: 120	
	PageContextImpl.release() line: 188	
	JspFactoryImpl.internalReleasePageContext(PageContext) line: 115	
	JspFactoryImpl.releasePageContext(PageContext) line: 74	
	Kuchen.jsp line: not available	
	Kuchen_jsp(HttpJspBase).service(HttpServletRequest, 
HttpServletResponse) line: 69	
	Kuchen_jsp(HttpServlet).service(ServletRequest, ServletResponse) line: 790	
	JspServletWrapper.service(HttpServletRequest, HttpServletResponse, 
boolean) line: 365	
	JspServlet.serviceJspFile(HttpServletRequest, HttpServletResponse, 
String, Throwable, boolean) line: 321	
	JspServlet.service(HttpServletRequest, HttpServletResponse) line: 254	
	JspServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 790	
	ServletHandler.handleRequest(HttpServerExchange) line: 87	
	FilterHandler.handleRequest(HttpServerExchange) line: 82	
	ServletSecurityRoleHandler.handleRequest(HttpServerExchange) line: 54	
	ServletDispatchingHandler.handleRequest(HttpServerExchange) line: 36	
	SecurityContextAssociationHandler.handleRequest(HttpServerExchange) 
line: 78	
	PredicateHandler.handleRequest(HttpServerExchange) line: 25	
	PredicateHandler.handleRequest(HttpServerExchange) line: 25	
	ServletInitialHandler.dispatchRequest(HttpServerExchange, 
ServletRequestContext, ServletChain, DispatcherType) line: 196	
	ServletInitialHandler.dispatchToPath(HttpServerExchange, 
ServletPathMatch, DispatcherType) line: 139	
	RequestDispatcherImpl.forward(ServletRequest, ServletResponse) line: 156	
	KuchenEdit.jsp line: 43	
	KuchenEdit_jsp(HttpJspBase).service(HttpServletRequest, 
HttpServletResponse) line: 69	
	KuchenEdit_jsp(HttpServlet).service(ServletRequest, ServletResponse) 
line: 790	
	JspServletWrapper.service(HttpServletRequest, HttpServletResponse, 
boolean) line: 365	
	JspServlet.serviceJspFile(HttpServletRequest, HttpServletResponse, 
String, Throwable, boolean) line: 321	
	JspServlet.service(HttpServletRequest, HttpServletResponse) line: 254	
	JspServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 790	
	ServletHandler.handleRequest(HttpServerExchange) line: 87	
	FilterHandler$FilterChainImpl.doFilter(ServletRequest, ServletResponse) 
line: 130	
	JsrWebSocketFilter.doFilter(ServletRequest, ServletResponse, 
FilterChain) line: 136	
	ManagedFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 
line: 56	
	FilterHandler$FilterChainImpl.doFilter(ServletRequest, ServletResponse) 
line: 132	
	JsrWebSocketFilter.doFilter(ServletRequest, ServletResponse, 
FilterChain) line: 136	
	ManagedFilter.doFilter(ServletRequest, ServletResponse, FilterChain) 
line: 56	
	FilterHandler$FilterChainImpl.doFilter(ServletRequest, ServletResponse) 
line: 132	
	FilterHandler.handleRequest(HttpServerExchange) line: 85	
	ServletSecurityRoleHandler.handleRequest(HttpServerExchange) line: 56	
	ServletDispatchingHandler.handleRequest(HttpServerExchange) line: 36	
	SecurityContextAssociationHandler.handleRequest(HttpServerExchange) 
line: 78	
	SSLInformationAssociationHandler.handleRequest(HttpServerExchange) 
line: 113	
	AuthenticationCallHandler.handleRequest(HttpServerExchange) line: 52	
	ServletConfidentialityConstraintHandler(AbstractConfidentialityHandler).handleRequest(HttpServerExchange) line: 45	
	CachedAuthenticatedSessionHandler.handleRequest(HttpServerExchange) 
line: 65	
	SecurityInitialHandler.handleRequest(HttpServerExchange) line: 70	
	PredicateHandler.handleRequest(HttpServerExchange) line: 25	
	SecurityContextCreationHandler.handleRequest(HttpServerExchange) line: 54	
	PredicateHandler.handleRequest(HttpServerExchange) line: 25	
	ServletInitialHandler.handleFirstRequest(HttpServerExchange, 
ServletChain, ServletRequestContext, ServletRequest, ServletResponse) 
line: 207	
	ServletInitialHandler.dispatchRequest(HttpServerExchange, 
ServletRequestContext, ServletChain, DispatcherType) line: 194	
	ServletInitialHandler.access$000(ServletInitialHandler, 
HttpServerExchange, ServletRequestContext, ServletChain, DispatcherType) 
line: 72	
	ServletInitialHandler$1.handleRequest(HttpServerExchange) line: 128	
	HttpHandlers.executeRootHandler(HttpHandler, HttpServerExchange, 
boolean) line: 36	
	HttpServerExchange$1.run() line: 628	
	XnioWorker$TaskPool(ThreadPoolExecutor).runWorker(ThreadPoolExecutor$Worker) line: not available	
	ThreadPoolExecutor$Worker.run() line: not available	
	Thread.run() line: not available	


Best regards

Wolfgang Knauf
-------------- next part --------------
A non-text attachment was scrubbed...
Name: KuchenZutat.ear
Type: application/x-java-archive
Size: 14400 bytes
Desc: not available
Url : http://lists.jboss.org/pipermail/undertow-dev/attachments/20130828/499aa7d8/attachment-0001.jar 


More information about the undertow-dev mailing list