# \[Solved\] Kotlin compilation StackOverflow Failure

**URL:** <https://discuss.kotlinlang.org/t/solved-kotlin-compilation-stackoverflow-failure/20614>\
**Category:** Web Development\
**Created:** [January 20, 2021, 11:23pm UTC](https://discuss.kotlinlang.org/t/solved-kotlin-compilation-stackoverflow-failure/20614 "2021-01-20T23:23:00Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![yqli](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/yqli/32/1890_2.png) [@yqli](https://discuss.kotlinlang.org/u/yqli)\
**Post date:** [January 20, 2021, 11:23pm UTC](https://discuss.kotlinlang.org/t/solved-kotlin-compilation-stackoverflow-failure/20614/1 "2021-01-20T23:23:00Z")

</div>

Hi all,

We are using Kotlin + Spring to develop a web application. Recently, we observed the compilation is not stable and sometimes the build failed with StackOverflow exception.

The kotlin version is 1.4.21-2 (the latest one) and we are using maven to build. The followings are the error messages.

```
[ERROR] java.lang.StackOverflowError
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.mark(ControlFlowProcessor.kt:174)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.visitQualifiedExpression(ControlFlowProcessor.kt:1089)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitQualifiedExpression(KtVisitorVoid.java:815)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitQualifiedExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitDotQualifiedExpression(KtVisitor.java:302)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDotQualifiedExpression(KtVisitorVoid.java:289)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDotQualifiedExpression(KtVisitorVoid.java:839)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDotQualifiedExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtDotQualifiedExpression.accept(KtDotQualifiedExpression.kt:32)
at org.jetbrains.kotlin.psi.KtElementImplStub.accept(KtElementImplStub.java:60)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.generateInstructions(ControlFlowProcessor.kt:179)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.getReceiverValues(ControlFlowProcessor.kt:1621)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.getReceiverValues(ControlFlowProcessor.kt:1591)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.generateCall(ControlFlowProcessor.kt:1537)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.checkAndGenerateCall(ControlFlowProcessor.kt:1530)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.generateCall(ControlFlowProcessor.kt:1525)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.visitCallExpression(ControlFlowProcessor.kt:1112)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitCallExpression(KtVisitorVoid.java:803)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitCallExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtCallExpression.accept(KtCallExpression.java:35)
at org.jetbrains.kotlin.psi.KtElementImpl.accept(KtElementImpl.java:51)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.generateInstructions(ControlFlowProcessor.kt:179)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.visitQualifiedExpression(ControlFlowProcessor.kt:1097)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitQualifiedExpression(KtVisitorVoid.java:815)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitQualifiedExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitDotQualifiedExpression(KtVisitor.java:302)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDotQualifiedExpression(KtVisitorVoid.java:289)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDotQualifiedExpression(KtVisitorVoid.java:839)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDotQualifiedExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtDotQualifiedExpression.accept(KtDotQualifiedExpression.kt:32)
at org.jetbrains.kotlin.psi.KtElementImplStub.accept(KtElementImplStub.java:60)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.generateInstructions(ControlFlowProcessor.kt:179)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.getReceiverValues(ControlFlowProcessor.kt:1621)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.getReceiverValues(ControlFlowProcessor.kt:1591)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.generateCall(ControlFlowProcessor.kt:1537)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.checkAndGenerateCall(ControlFlowProcessor.kt:1530)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.generateCall(ControlFlowProcessor.kt:1525)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.visitCallExpression(ControlFlowProcessor.kt:1112)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitCallExpression(KtVisitorVoid.java:803)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitCallExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtCallExpression.accept(KtCallExpression.java:35)
at org.jetbrains.kotlin.psi.KtElementImpl.accept(KtElementImpl.java:51)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.generateInstructions(ControlFlowProcessor.kt:179)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.visitQualifiedExpression(ControlFlowProcessor.kt:1097)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitQualifiedExpression(KtVisitorVoid.java:815)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitQualifiedExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitDotQualifiedExpression(KtVisitor.java:302)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDotQualifiedExpression(KtVisitorVoid.java:289)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDotQualifiedExpression(KtVisitorVoid.java:839)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDotQualifiedExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtDotQualifiedExpression.accept(KtDotQualifiedExpression.kt:32)
at org.jetbrains.kotlin.psi.KtElementImplStub.accept(KtElementImplStub.java:60)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.generateInstructions(ControlFlowProcessor.kt:179)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.getReceiverValues(ControlFlowProcessor.kt:1621)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.getReceiverValues(ControlFlowProcessor.kt:1591)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.generateCall(ControlFlowProcessor.kt:1537)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.checkAndGenerateCall(ControlFlowProcessor.kt:1530)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.generateCall(ControlFlowProcessor.kt:1525)
at org.jetbrains.kotlin.cfg.ControlFlowProcessor$CFPVisitor.visitCallExpression(ControlFlowProcessor.kt:1112)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitCallExpression(KtVisitorVoid.java:803)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitCallExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtCallExpression.accept(KtCallExpression.java:35)
at org.jetbrains.kotlin.psi.KtElementImpl.accept(KtElementImpl.java:51)

```

Any idea? Do I need to increase the stack size during compilation? If yes, how to do it in Maven?

Thanks in advance.

Regards,  
Yongqiang

---

<div class="post-metadata">

**Author:** ![yqli](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/yqli/32/1890_2.png) [@yqli](https://discuss.kotlinlang.org/u/yqli)\
**Post date:** [January 21, 2021, 10:01pm UTC](https://discuss.kotlinlang.org/t/solved-kotlin-compilation-stackoverflow-failure/20614/2 "2021-01-21T22:01:45Z")

</div>

I have figured out the solution by giving bigger stack size in `MAVEN_OPTS`

```
export MAVEN_OPTS="-Xms256m -Xmx1024m -Xss4m" 

```

If you meet the same issue, hope it helps.

---

<div class="post-metadata">

**Author:** ![yqli](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/yqli/32/1890_2.png) [@yqli](https://discuss.kotlinlang.org/u/yqli)\
**Post date:** [February 20, 2021, 1:19am UTC](https://discuss.kotlinlang.org/t/solved-kotlin-compilation-stackoverflow-failure/20614/3 "2021-02-20T01:19:30Z")

</div>

One more finding - If you have this issue in IDEA, you can use the environment variable of `_JAVA_OPTIONS`.

```
export _JAVA_OPTIONS=-Xss4m

```

I didn’t find how to configure in IDEA preference panel.
