Uploaded image for project: 'XWiki Platform'
  1. XWiki Platform
  2. XWIKI-22662

Impossible to access any editor if the content contains a call to a macro named "default"

    XMLWordPrintable

Details

    • Unit
    • Unknown
    • N/A
    • N/A

    Description

      To reproduce: put the content

      {{default/}}
      

      in a document and save. The macro does not need to exist.

      -> impossible to edit the document anymore.

      The edit is crashing because of an infinite loop in the required right analyzer:

      Uncaught exception 
      com.xpn.xwiki.XWikiException: Error number 0 in 11: Uncaught exception
      	at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:662)
      	at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:339)
      	at com.xpn.xwiki.web.LegacyActionServlet.service(LegacyActionServlet.java:108)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:590)
      	at org.eclipse.jetty.ee8.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1151)
      	at org.eclipse.jetty.ee8.servlet.ServletHolder.handle(ServletHolder.java:640)
      	at org.eclipse.jetty.ee8.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1374)
      	at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:122)
      	at org.eclipse.jetty.ee8.servlet.FilterHolder.doFilter(FilterHolder.java:171)
      	at org.eclipse.jetty.ee8.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1348)
      	at org.xwiki.wysiwyg.filter.ConversionFilter.doFilter(ConversionFilter.java:61)
      	at org.eclipse.jetty.ee8.servlet.FilterHolder.doFilter(FilterHolder.java:171)
      	at org.eclipse.jetty.ee8.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1348)
      	at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:63)
      	at org.eclipse.jetty.ee8.servlet.FilterHolder.doFilter(FilterHolder.java:171)
      	at org.eclipse.jetty.ee8.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1348)
      	at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:132)
      	at org.eclipse.jetty.ee8.servlet.FilterHolder.doFilter(FilterHolder.java:171)
      	at org.eclipse.jetty.ee8.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1348)
      	at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208)
      	at org.eclipse.jetty.ee8.servlet.FilterHolder.doFilter(FilterHolder.java:171)
      	at org.eclipse.jetty.ee8.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1348)
      	at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:117)
      	at org.eclipse.jetty.ee8.servlet.FilterHolder.doFilter(FilterHolder.java:177)
      	at org.eclipse.jetty.ee8.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1348)
      	at org.eclipse.jetty.ee8.websocket.servlet.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:175)
      	at org.eclipse.jetty.ee8.servlet.FilterHolder.doFilter(FilterHolder.java:171)
      	at org.eclipse.jetty.ee8.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1348)
      	at org.eclipse.jetty.ee8.servlet.ServletHandler.doHandle(ServletHandler.java:454)
      	at org.eclipse.jetty.ee8.nested.ScopedHandler.handle(ScopedHandler.java:119)
      	at org.eclipse.jetty.ee8.security.SecurityHandler.handle(SecurityHandler.java:497)
      	at org.eclipse.jetty.ee8.nested.HandlerWrapper.handle(HandlerWrapper.java:108)
      	at org.eclipse.jetty.ee8.nested.ScopedHandler.nextHandle(ScopedHandler.java:183)
      	at org.eclipse.jetty.ee8.nested.SessionHandler.doHandle(SessionHandler.java:516)
      	at org.eclipse.jetty.ee8.nested.ScopedHandler.nextHandle(ScopedHandler.java:181)
      	at org.eclipse.jetty.ee8.nested.ContextHandler.doHandle(ContextHandler.java:878)
      	at org.eclipse.jetty.ee8.nested.ScopedHandler.nextScope(ScopedHandler.java:152)
      	at org.eclipse.jetty.ee8.servlet.ServletHandler.doScope(ServletHandler.java:423)
      	at org.eclipse.jetty.ee8.nested.ScopedHandler.nextScope(ScopedHandler.java:150)
      	at org.eclipse.jetty.ee8.nested.SessionHandler.doScope(SessionHandler.java:500)
      	at org.eclipse.jetty.ee8.nested.ScopedHandler.nextScope(ScopedHandler.java:150)
      	at org.eclipse.jetty.ee8.nested.ContextHandler.doScope(ContextHandler.java:823)
      	at org.eclipse.jetty.ee8.nested.ScopedHandler.handle(ScopedHandler.java:117)
      	at org.eclipse.jetty.ee8.nested.ContextHandler.handle(ContextHandler.java:1421)
      	at org.eclipse.jetty.ee8.nested.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1294)
      	at org.eclipse.jetty.ee8.nested.HttpChannel.dispatch(HttpChannel.java:624)
      	at org.eclipse.jetty.ee8.nested.HttpChannel.handle(HttpChannel.java:456)
      	at org.eclipse.jetty.ee8.nested.ContextHandler$CoreContextHandler$CoreToNestedHandler.handle(ContextHandler.java:2365)
      	at org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1060)
      	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:181)
      	at org.eclipse.jetty.server.Server.handle(Server.java:181)
      	at org.eclipse.jetty.server.internal.HttpChannelState$HandlerInvoker.run(HttpChannelState.java:648)
      	at org.eclipse.jetty.server.internal.HttpConnection.onFillable(HttpConnection.java:403)
      	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:322)
      	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:99)
      	at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
      	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:478)
      	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:441)
      	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:293)
      	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:201)
      	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:311)
      	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:979)
      	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1209)
      	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1164)
      	at java.base/java.lang.Thread.run(Thread.java:1583)
      Caused by: java.lang.StackOverflowError: null
      	at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1078)
      	at java.base/java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:738)
      	at org.xwiki.collection.internal.PriorityEntries.get(PriorityEntries.java:80)
      	at org.xwiki.component.embed.EmbeddableComponentManager.getComponentEntry(EmbeddableComponentManager.java:439)
      	at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:298)
      	at org.xwiki.component.internal.ContextComponentManagerProvider.get(ContextComponentManagerProvider.java:64)
      	at org.xwiki.component.internal.ContextComponentManagerProvider.get(ContextComponentManagerProvider.java:40)
      	at org.xwiki.platform.security.requiredrights.internal.analyzer.DefaultMacroBlockRequiredRightAnalyzer.analyzeWithExceptions(DefaultMacroBlockRequiredRightAnalyzer.java:88)
      	at org.xwiki.platform.security.requiredrights.internal.analyzer.DefaultMacroBlockRequiredRightAnalyzer.analyze(DefaultMacroBlockRequiredRightAnalyzer.java:72)
      	at org.xwiki.platform.security.requiredrights.internal.analyzer.DefaultMacroBlockRequiredRightAnalyzer.analyze(DefaultMacroBlockRequiredRightAnalyzer.java:50)
      	at org.xwiki.platform.security.requiredrights.internal.analyzer.DefaultMacroBlockRequiredRightAnalyzer.analyzeWithExceptions(DefaultMacroBlockRequiredRightAnalyzer.java:92)
      	at org.xwiki.platform.security.requiredrights.internal.analyzer.DefaultMacroBlockRequiredRightAnalyzer.analyze(DefaultMacroBlockRequiredRightAnalyzer.java:72)
      	at org.xwiki.platform.security.requiredrights.internal.analyzer.DefaultMacroBlockRequiredRightAnalyzer.analyze(DefaultMacroBlockRequiredRightAnalyzer.java:50)
      	at org.xwiki.platform.security.requiredrights.internal.analyzer.DefaultMacroBlockRequiredRightAnalyzer.analyzeWithExceptions(DefaultMacroBlockRequiredRightAnalyzer.java:92)
      	at org.xwiki.platform.security.requiredrights.internal.analyzer.DefaultMacroBlockRequiredRightAnalyzer.analyze(DefaultMacroBlockRequiredRightAnalyzer.java:72)
      	at org.xwiki.platform.security.requiredrights.internal.analyzer.DefaultMacroBlockRequiredRightAnalyzer.analyze(DefaultMacroBlockRequiredRightAnalyzer.java:50)
      	at org.xwiki.platform.security.requiredrights.internal.analyzer.DefaultMacroBlockRequiredRightAnalyzer.analyzeWithExceptions(DefaultMacroBlockRequiredRightAnalyzer.java:92)
      	at org.xwiki.platform.security.requiredrights.internal.analyzer.DefaultMacroBlockRequiredRightAnalyzer.analyze(DefaultMacroBlockRequiredRightAnalyzer.java:72)
      	at org.xwiki.platform.security.requiredrights.internal.analyzer.DefaultMacroBlockRequiredRightAnalyzer.analyze(DefaultMacroBlockRequiredRightAnalyzer.java:50)
      	at org.xwiki.platform.security.requiredrights.internal.analyzer.DefaultMacroBlockRequiredRightAnalyzer.analyzeWithExceptions(DefaultMacroBlockRequiredRightAnalyzer.java:92)
      	at org.xwiki.platform.security.requiredrights.internal.analyzer.DefaultMacroBlockRequiredRightAnalyzer.analyze(DefaultMacroBlockRequiredRightAnalyzer.java:72)
      	at org.xwiki.platform.security.requiredrights.internal.analyzer.DefaultMacroBlockRequiredRightAnalyzer.analyze(DefaultMacroBlockRequiredRightAnalyzer.java:50)
      	at org.xwiki.platform.security.requiredrights.internal.analyzer.DefaultMacroBlockRequiredRightAnalyzer.analyzeWithExceptions(DefaultMacroBlockRequiredRightAnalyzer.java:92)
      	at org.xwiki.platform.security.requiredrights.internal.analyzer.DefaultMacroBlockRequiredRightAnalyzer.analyze(DefaultMacroBlockRequiredRightAnalyzer.java:72)
      	at org.xwiki.platform.security.requiredrights.internal.analyzer.DefaultMacroBlockRequiredRightAnalyzer.analyze(DefaultMacroBlockRequiredRightAnalyzer.java:50)
      

      It's not a great idea to name a macro like this. But once you made the mistake, it's very hard to fix because you cannot access any of the editors. Maybe there is some parameter that can be put in the URL to skip the required right analyzer ?

      I assume it impacts any version of XWiki with the right analyzer (15.9+ ?) but I did not check.

      Attachments

        Activity

          People

            MichaelHamann Michael Hamann
            tmortagne Thomas Mortagne
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: