IMPORTANT!
This section is only for bug reports, which must follow the template below.
Please post any other questions to the official QuPath forum at https://forum.image.sc/tags/qupath
If in doubt, use image.sc. This helps us keep things organized.
Before we begin...
Before submitting your bug report, please check the following:
Bug report
This is something I'm noticing in 0.7.0rc1 (both the one you compiled and the one I compile from main).
Describe the bug
Guardrail already in place: If you move the divider between the log list and the details pane all the way to its top allowed position, layout calculation errors occur but are properly handled:
Mar 02, 2026 11:30:40 AM javafx.scene.control.skin.VirtualFlow addTrailingCells
INFO: index exceeds maxCellCount. Check size calculations for class javafx.scene.control.TableRow
However, if the Log window is maximised and the same action is performed, the errors are no longer handled.
The (repeating) error message
```text
11:10:30.522 [JavaFX Application Thread] [INFO ] qupath.lib.gui.QuPathApp - Starting QuPath with parameters: []
Mar 02, 2026 11:10:59 AM javafx.scene.control.skin.VirtualFlow addTrailingCells
INFO: index exceeds maxCellCount. Check size calculations for class javafx.scene.control.TableRow
Mar 02, 2026 11:11:07 AM javafx.scene.control.skin.VirtualFlow addTrailingCells
INFO: index exceeds maxCellCount. Check size calculations for class javafx.scene.control.TableRow
Mar 02, 2026 11:11:07 AM javafx.scene.control.skin.VirtualFlow addTrailingCells
INFO: index exceeds maxCellCount. Check size calculations for class javafx.scene.control.TableRow
java.lang.NullPointerException: Cannot invoke "com.sun.prism.d3d.D3DTextureData.getContext()" because the return value of "com.sun.prism.d3d.D3DTextureResource.getResource()" is null
at com.sun.prism.d3d.D3DTexture.getContext(D3DTexture.java:85)
at com.sun.prism.d3d.D3DTexture.update(D3DTexture.java:210)
at com.sun.prism.d3d.D3DTexture.update(D3DTexture.java:154)
at com.sun.prism.impl.BaseContext.flushMask(BaseContext.java:115)
at com.sun.prism.impl.BaseContext.drawQuads(BaseContext.java:124)
at com.sun.prism.impl.VertexBuffer.flush(VertexBuffer.java:98)
at com.sun.prism.impl.BaseContext.flushVertexBuffer(BaseContext.java:107)
at com.sun.prism.impl.ps.BaseShaderContext.checkState(BaseShaderContext.java:685)
at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:504)
at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:371)
at com.sun.prism.impl.ps.BaseShaderGraphics.renderGeneralRoundedPgram(BaseShaderGraphics.java:924)
at com.sun.prism.impl.ps.BaseShaderGraphics.renderGeneralRoundedRect(BaseShaderGraphics.java:625)
at com.sun.prism.impl.ps.BaseShaderGraphics.fillRect(BaseShaderGraphics.java:1532)
at com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectanglesDirectly(NGRegion.java:1112)
at com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectangle(NGRegion.java:852)
at com.sun.javafx.sg.prism.NGRegion.renderAsRectangle(NGRegion.java:754)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:575)
at com.sun.javafx.sg.prism.CacheFilter.renderNodeToScreen(CacheFilter.java:700)
at com.sun.javafx.sg.prism.CacheFilter.render(CacheFilter.java:626)
at com.sun.javafx.sg.prism.NGNode.renderCached(NGNode.java:2343)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2054)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
at com.sun.javafx.sg.prism.NGNode.renderForClip(NGNode.java:2279)
at com.sun.javafx.sg.prism.NGNode.renderRectClip(NGNode.java:2186)
at com.sun.javafx.sg.prism.NGNode.renderClip(NGNode.java:2213)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2057)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:481)
at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:321)
at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:92)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:122)
at java.base/java.lang.Thread.run(Unknown Source)
java.lang.NullPointerException: Cannot invoke "com.sun.prism.d3d.D3DTextureData.getContext()" because the return value of "com.sun.prism.d3d.D3DTextureResource.getResource()" is null
at com.sun.prism.d3d.D3DTexture.getContext(D3DTexture.java:85)
at com.sun.prism.d3d.D3DTexture.update(D3DTexture.java:210)
at com.sun.prism.d3d.D3DTexture.update(D3DTexture.java:154)
at com.sun.prism.impl.BaseContext.flushMask(BaseContext.java:115)
at com.sun.prism.impl.BaseContext.drawQuads(BaseContext.java:124)
at com.sun.prism.impl.VertexBuffer.flush(VertexBuffer.java:98)
at com.sun.prism.impl.BaseContext.flushVertexBuffer(BaseContext.java:107)
at com.sun.prism.impl.ps.BaseShaderContext.setRenderTarget(BaseShaderContext.java:791)
at com.sun.prism.impl.BaseContext.setRenderTarget(BaseContext.java:149)
at com.sun.prism.impl.BaseGraphics.(BaseGraphics.java:107)
at com.sun.prism.impl.ps.BaseShaderGraphics.(BaseShaderGraphics.java:84)
at com.sun.prism.d3d.D3DGraphics.(D3DGraphics.java:40)
at com.sun.prism.d3d.D3DGraphics.create(D3DGraphics.java:63)
at com.sun.prism.d3d.D3DSwapChain.createGraphics(D3DSwapChain.java:148)
at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:88)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:122)
at java.base/java.lang.Thread.run(Unknown Source)
java.lang.NullPointerException: Cannot invoke "com.sun.prism.d3d.D3DTextureData.getContext()" because the return value of "com.sun.prism.d3d.D3DTextureResource.getResource()" is null
at com.sun.prism.d3d.D3DTexture.getContext(D3DTexture.java:85)
at com.sun.prism.d3d.D3DTexture.update(D3DTexture.java:210)
at com.sun.prism.d3d.D3DTexture.update(D3DTexture.java:154)
at com.sun.prism.impl.BaseContext.flushMask(BaseContext.java:115)
at com.sun.prism.impl.BaseContext.drawQuads(BaseContext.java:124)
at com.sun.prism.impl.VertexBuffer.flush(VertexBuffer.java:98)
at com.sun.prism.impl.BaseContext.flushVertexBuffer(BaseContext.java:107)
at com.sun.prism.impl.ps.BaseShaderContext.setRenderTarget(BaseShaderContext.java:791)
at com.sun.prism.impl.BaseContext.setRenderTarget(BaseContext.java:149)
at com.sun.prism.impl.BaseGraphics.(BaseGraphics.java:107)
at com.sun.prism.impl.ps.BaseShaderGraphics.(BaseShaderGraphics.java:84)
at com.sun.prism.d3d.D3DGraphics.(D3DGraphics.java:40)
at com.sun.prism.d3d.D3DGraphics.create(D3DGraphics.java:63)
at com.sun.prism.d3d.D3DSwapChain.createGraphics(D3DSwapChain.java:148)
at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:88)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:122)
at java.base/java.lang.Thread.run(Unknown Source)
```
After the error occurs, the log window becomes completely unresponsive (see screenshot after trying to unmaximise the window and stretching it).
To Reproduce
Steps to reproduce the behavior:
- Right after opening 0.7.0rc1, press Ctrl-Shift-L
- Maximise the log window (win + up arrow)
- move the divider towards the log entries.
- See error messages pasted above
Screenshots
Desktop (please complete the following information):
- OS: Windows 10
- QuPath Version: 0.7.0rc1, and snapshot compiled from main.
IMPORTANT!
This section is only for bug reports, which must follow the template below.
Please post any other questions to the official QuPath forum at https://forum.image.sc/tags/qupath
If in doubt, use image.sc. This helps us keep things organized.
Before we begin...
Before submitting your bug report, please check the following:
Bug report
This is something I'm noticing in 0.7.0rc1 (both the one you compiled and the one I compile from main).
Describe the bug
Guardrail already in place: If you move the divider between the log list and the details pane all the way to its top allowed position, layout calculation errors occur but are properly handled:
However, if the Log window is maximised and the same action is performed, the errors are no longer handled.
The (repeating) error message
```text 11:10:30.522 [JavaFX Application Thread] [INFO ] qupath.lib.gui.QuPathApp - Starting QuPath with parameters: [] Mar 02, 2026 11:10:59 AM javafx.scene.control.skin.VirtualFlow addTrailingCells INFO: index exceeds maxCellCount. Check size calculations for class javafx.scene.control.TableRow Mar 02, 2026 11:11:07 AM javafx.scene.control.skin.VirtualFlow addTrailingCells INFO: index exceeds maxCellCount. Check size calculations for class javafx.scene.control.TableRow Mar 02, 2026 11:11:07 AM javafx.scene.control.skin.VirtualFlow addTrailingCells INFO: index exceeds maxCellCount. Check size calculations for class javafx.scene.control.TableRow java.lang.NullPointerException: Cannot invoke "com.sun.prism.d3d.D3DTextureData.getContext()" because the return value of "com.sun.prism.d3d.D3DTextureResource.getResource()" is null at com.sun.prism.d3d.D3DTexture.getContext(D3DTexture.java:85) at com.sun.prism.d3d.D3DTexture.update(D3DTexture.java:210) at com.sun.prism.d3d.D3DTexture.update(D3DTexture.java:154) at com.sun.prism.impl.BaseContext.flushMask(BaseContext.java:115) at com.sun.prism.impl.BaseContext.drawQuads(BaseContext.java:124) at com.sun.prism.impl.VertexBuffer.flush(VertexBuffer.java:98) at com.sun.prism.impl.BaseContext.flushVertexBuffer(BaseContext.java:107) at com.sun.prism.impl.ps.BaseShaderContext.checkState(BaseShaderContext.java:685) at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:504) at com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:371) at com.sun.prism.impl.ps.BaseShaderGraphics.renderGeneralRoundedPgram(BaseShaderGraphics.java:924) at com.sun.prism.impl.ps.BaseShaderGraphics.renderGeneralRoundedRect(BaseShaderGraphics.java:625) at com.sun.prism.impl.ps.BaseShaderGraphics.fillRect(BaseShaderGraphics.java:1532) at com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectanglesDirectly(NGRegion.java:1112) at com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectangle(NGRegion.java:852) at com.sun.javafx.sg.prism.NGRegion.renderAsRectangle(NGRegion.java:754) at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:575) at com.sun.javafx.sg.prism.CacheFilter.renderNodeToScreen(CacheFilter.java:700) at com.sun.javafx.sg.prism.CacheFilter.render(CacheFilter.java:626) at com.sun.javafx.sg.prism.NGNode.renderCached(NGNode.java:2343) at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2054) at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955) at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266) at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579) at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063) at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955) at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266) at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579) at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063) at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955) at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266) at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579) at com.sun.javafx.sg.prism.NGNode.renderForClip(NGNode.java:2279) at com.sun.javafx.sg.prism.NGNode.renderRectClip(NGNode.java:2186) at com.sun.javafx.sg.prism.NGNode.renderClip(NGNode.java:2213) at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2057) at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955) at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266) at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579) at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063) at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955) at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266) at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579) at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063) at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955) at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:266) at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:579) at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063) at com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955) at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:481) at com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:321) at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:92) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source) at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:122) at java.base/java.lang.Thread.run(Unknown Source) java.lang.NullPointerException: Cannot invoke "com.sun.prism.d3d.D3DTextureData.getContext()" because the return value of "com.sun.prism.d3d.D3DTextureResource.getResource()" is null at com.sun.prism.d3d.D3DTexture.getContext(D3DTexture.java:85) at com.sun.prism.d3d.D3DTexture.update(D3DTexture.java:210) at com.sun.prism.d3d.D3DTexture.update(D3DTexture.java:154) at com.sun.prism.impl.BaseContext.flushMask(BaseContext.java:115) at com.sun.prism.impl.BaseContext.drawQuads(BaseContext.java:124) at com.sun.prism.impl.VertexBuffer.flush(VertexBuffer.java:98) at com.sun.prism.impl.BaseContext.flushVertexBuffer(BaseContext.java:107) at com.sun.prism.impl.ps.BaseShaderContext.setRenderTarget(BaseShaderContext.java:791) at com.sun.prism.impl.BaseContext.setRenderTarget(BaseContext.java:149) at com.sun.prism.impl.BaseGraphics.(BaseGraphics.java:107) at com.sun.prism.impl.ps.BaseShaderGraphics.(BaseShaderGraphics.java:84) at com.sun.prism.d3d.D3DGraphics.(D3DGraphics.java:40) at com.sun.prism.d3d.D3DGraphics.create(D3DGraphics.java:63) at com.sun.prism.d3d.D3DSwapChain.createGraphics(D3DSwapChain.java:148) at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:88) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source) at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:122) at java.base/java.lang.Thread.run(Unknown Source) java.lang.NullPointerException: Cannot invoke "com.sun.prism.d3d.D3DTextureData.getContext()" because the return value of "com.sun.prism.d3d.D3DTextureResource.getResource()" is null at com.sun.prism.d3d.D3DTexture.getContext(D3DTexture.java:85) at com.sun.prism.d3d.D3DTexture.update(D3DTexture.java:210) at com.sun.prism.d3d.D3DTexture.update(D3DTexture.java:154) at com.sun.prism.impl.BaseContext.flushMask(BaseContext.java:115) at com.sun.prism.impl.BaseContext.drawQuads(BaseContext.java:124) at com.sun.prism.impl.VertexBuffer.flush(VertexBuffer.java:98) at com.sun.prism.impl.BaseContext.flushVertexBuffer(BaseContext.java:107) at com.sun.prism.impl.ps.BaseShaderContext.setRenderTarget(BaseShaderContext.java:791) at com.sun.prism.impl.BaseContext.setRenderTarget(BaseContext.java:149) at com.sun.prism.impl.BaseGraphics.(BaseGraphics.java:107) at com.sun.prism.impl.ps.BaseShaderGraphics.(BaseShaderGraphics.java:84) at com.sun.prism.d3d.D3DGraphics.(D3DGraphics.java:40) at com.sun.prism.d3d.D3DGraphics.create(D3DGraphics.java:63) at com.sun.prism.d3d.D3DSwapChain.createGraphics(D3DSwapChain.java:148) at com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:88) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source) at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:122) at java.base/java.lang.Thread.run(Unknown Source) ```After the error occurs, the log window becomes completely unresponsive (see screenshot after trying to unmaximise the window and stretching it).
To Reproduce
Steps to reproduce the behavior:
Screenshots
Desktop (please complete the following information):