[
https://issues.apache.org/jira/browse/PDFBOX-2996?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15025491#comment-15025491
]
Lars Torunski commented on PDFBOX-2996:
---------------------------------------
Your StackOverflowError is probably caused by the selection of the pivot in line
T pivot = list.get(right);
See https://en.wikipedia.org/wiki/Quicksort#Choice_of_pivot for more details.
Your trace of the split() method points out the problem, because split=right
The new iterative quicksort chooses the middle index of the partition by using
int p = left + ((right-left)/2);
and should solve your problem by choosing the middle index and avoiding the
recursion.
> StackOverflow in Quicksort
> --------------------------
>
> Key: PDFBOX-2996
> URL: https://issues.apache.org/jira/browse/PDFBOX-2996
> Project: PDFBox
> Issue Type: Bug
> Components: Text extraction
> Affects Versions: 1.8.10, 2.0.0
> Environment: Java 7
> Reporter: Manuel Aristaran
> Attachments: artikel1_20_arab.pdf-sorted-diff.txt,
> artikel1_20_arab.pdf-sorted-iter.txt, artikel1_20_arab.pdf-sorted-rekur.txt,
> failing_sort.pdf, quicksort.patch
>
>
> Running PDFTextStripper through ExtractText triggers a StackOverflow
> exception in the QuickSort implementation for [this particular
> document|https://www.dropbox.com/s/6crie7y5gqadwa5/1.pdf?dl=0].
> To reproduce: {{java -jar pdfbox-app-1.8.11-SNAPSHOT.jar ExtractText -sort
> failing_sort.pdf}}
> (Related to PDFBOX-1512)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]