I have come across a report today.
I have done some research about this but I couldnt find any reason why this occurs.
(Ignore pagination is set to false in report)
There are multiple detail bands in the report (30+)
The report goes into infinite loop because of "page break" usage on one of the detail bands.
When I remove it, it generates fine.
I have debugged the report and there is something I couldnt really tell why JR does it:
Engine calculates "maxBandStretch" variable in JrFillElementContainer class, iterating through band elements.
If maxBandStretch is greater than "availableHeight" it flags the band (subdetail band-only one of them) "willOverflow". (the idea looks fine)
However, element.getStretchHeight() this method is used for evaluating bandStrecth and it is evaluated over 1000 pixel in our case for "page break", so it goes for an infinite loop.
I didnt get the idea why pagebreaks is not considered differently while evaluating maxBandStretch. In the actual filling process it will generate a page break for it, so engine should behave differently when it come across a pb when evaluating bandstretch.
I cant tell exactly whats wrong but I think some changes should be done here.