java.lang.StackOverflowError

Sonatype JIRA | Tamás Cservenák | 7 years ago
tip
Do you know that we can give you better hits? Get more relevant results from Samebug’s stack trace search.
  1. 0

    Timeline filter implementation fills up the stack due to it's recursive implementation. The implementation, since it's recursive, just fills up the call stack, to clean up filtered elements from memory only _after_ recursion ends. With feeds having a lot to filter out, this leads to OOM. Example stack trace: {noformat} INFO | jvm 1 | 2010/11/24 19:43:22.806 | 2010-11-24 19:43:22 ERROR [-473546514-2151] - o.s.n.r.NexusApplic~ - Unhandled exception or error intercepted INFO | jvm 1 | 2010/11/24 19:43:22.807 | java.lang.StackOverflowError INFO | jvm 1 | 2010/11/24 19:43:22.807 | at java.text.DigitList.getStringBuffer(DigitList.java:681) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at java.text.DigitList.getLong(DigitList.java:172) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at java.text.DecimalFormat.parse(DecimalFormat.java:1298) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1589) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1312) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at java.text.DateFormat.parse(DateFormat.java:335) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at org.apache.lucene.document.DateTools.stringToDate(DateTools.java:179) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at org.apache.lucene.document.DateTools.stringToTime(DateTools.java:142) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at org.sonatype.timeline.DefaultTimelineIndexer$IndexerTimelineResult.buildData(DefaultTimelineIndexer.java:454) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at org.sonatype.timeline.DefaultTimelineIndexer$IndexerTimelineResult.fetchNextRecord(DefaultTimelineIndexer.java:416) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at org.sonatype.timeline.DefaultTimelineIndexer$IndexerTimelineResult.fetchNextRecord(DefaultTimelineIndexer.java:420) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at org.sonatype.timeline.DefaultTimelineIndexer$IndexerTimelineResult.fetchNextRecord(DefaultTimelineIndexer.java:420) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at org.sonatype.timeline.DefaultTimelineIndexer$IndexerTimelineResult.fetchNextRecord(DefaultTimelineIndexer.java:420) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at org.sonatype.timeline.DefaultTimelineIndexer$IndexerTimelineResult.fetchNextRecord(DefaultTimelineIndexer.java:420) {noformat}

    Sonatype JIRA | 7 years ago | Tamás Cservenák
    java.lang.StackOverflowError
  2. 0

    Timeline filter implementation fills up the stack due to it's recursive implementation. The implementation, since it's recursive, just fills up the call stack, to clean up filtered elements from memory only _after_ recursion ends. With feeds having a lot to filter out, this leads to OOM. Example stack trace: {noformat} INFO | jvm 1 | 2010/11/24 19:43:22.806 | 2010-11-24 19:43:22 ERROR [-473546514-2151] - o.s.n.r.NexusApplic~ - Unhandled exception or error intercepted INFO | jvm 1 | 2010/11/24 19:43:22.807 | java.lang.StackOverflowError INFO | jvm 1 | 2010/11/24 19:43:22.807 | at java.text.DigitList.getStringBuffer(DigitList.java:681) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at java.text.DigitList.getLong(DigitList.java:172) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at java.text.DecimalFormat.parse(DecimalFormat.java:1298) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1589) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1312) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at java.text.DateFormat.parse(DateFormat.java:335) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at org.apache.lucene.document.DateTools.stringToDate(DateTools.java:179) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at org.apache.lucene.document.DateTools.stringToTime(DateTools.java:142) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at org.sonatype.timeline.DefaultTimelineIndexer$IndexerTimelineResult.buildData(DefaultTimelineIndexer.java:454) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at org.sonatype.timeline.DefaultTimelineIndexer$IndexerTimelineResult.fetchNextRecord(DefaultTimelineIndexer.java:416) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at org.sonatype.timeline.DefaultTimelineIndexer$IndexerTimelineResult.fetchNextRecord(DefaultTimelineIndexer.java:420) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at org.sonatype.timeline.DefaultTimelineIndexer$IndexerTimelineResult.fetchNextRecord(DefaultTimelineIndexer.java:420) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at org.sonatype.timeline.DefaultTimelineIndexer$IndexerTimelineResult.fetchNextRecord(DefaultTimelineIndexer.java:420) INFO | jvm 1 | 2010/11/24 19:43:22.807 | at org.sonatype.timeline.DefaultTimelineIndexer$IndexerTimelineResult.fetchNextRecord(DefaultTimelineIndexer.java:420) {noformat}

    Sonatype JIRA | 7 years ago | Tamás Cservenák
    java.lang.StackOverflowError

  1. marcbouvierdav 1 times, last 2 months ago

Root Cause Analysis

  1. java.lang.StackOverflowError

    No message provided

    at java.text.DigitList.getStringBuffer()
  2. Java RT
    DateFormat.parse
    1. java.text.DigitList.getStringBuffer(DigitList.java:681)
    2. java.text.DigitList.getLong(DigitList.java:172)
    3. java.text.DecimalFormat.parse(DecimalFormat.java:1298)
    4. java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1589)
    5. java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1312)
    6. java.text.DateFormat.parse(DateFormat.java:335)
    6 frames
  3. Lucene
    DateTools.stringToTime
    1. org.apache.lucene.document.DateTools.stringToDate(DateTools.java:179)
    2. org.apache.lucene.document.DateTools.stringToTime(DateTools.java:142)
    2 frames
  4. org.sonatype.timeline
    DefaultTimelineIndexer$IndexerTimelineResult.fetchNextRecord
    1. org.sonatype.timeline.DefaultTimelineIndexer$IndexerTimelineResult.buildData(DefaultTimelineIndexer.java:454)
    2. org.sonatype.timeline.DefaultTimelineIndexer$IndexerTimelineResult.fetchNextRecord(DefaultTimelineIndexer.java:416)
    3. org.sonatype.timeline.DefaultTimelineIndexer$IndexerTimelineResult.fetchNextRecord(DefaultTimelineIndexer.java:420)
    4. org.sonatype.timeline.DefaultTimelineIndexer$IndexerTimelineResult.fetchNextRecord(DefaultTimelineIndexer.java:420)
    5. org.sonatype.timeline.DefaultTimelineIndexer$IndexerTimelineResult.fetchNextRecord(DefaultTimelineIndexer.java:420)
    6. org.sonatype.timeline.DefaultTimelineIndexer$IndexerTimelineResult.fetchNextRecord(DefaultTimelineIndexer.java:420)
    6 frames