[ 
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: dev-unsubscr...@pdfbox.apache.org
For additional commands, e-mail: dev-h...@pdfbox.apache.org

Reply via email to