java.lang.StackOverflowError

Sonatype JIRA | Tamás Cservenák | 6 years ago
  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 | 6 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 | 6 years ago | Tamás Cservenák
    java.lang.StackOverflowError
  3. Speed up your debug routine!

    Automated exception search integrated into your IDE

  4. 0

    Unable to trace the source of a stack overflow error

    Stack Overflow | 5 years ago | David
    java.lang.StackOverflowError

    Not finding the right solution?
    Take a tour to get the most out of Samebug.

    Tired of useless tips?

    Automated exception search integrated into your IDE

    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