2015-06-25 18 views
16

Tôi đã gặp phải lỗi này trong một thời gian. Hoàn toàn bị kích thích vì điều này. Đã thử tất cả các giải pháp tương tự được thấy trong stackoverflow và các trang web khác.biên dịch sbt gây ra lỗi stackoverflow

Tôi có 4 dự án scala riêng biệt. Trong số đó, tôi nhận được lỗi StackOverflow khi biên soạn các dự án kéo. Hai dự án này là những dự án lớn nhất trong số 4 dự án. Tôi nhận được lỗi này khi tôi cố gắng xây dựng dự án trong máy chủ Ubuntu. Tôi đã thử tăng các tùy chọn Xmx trong tập tin cấu hình sbt, nhưng không thành công.

Bất kỳ ai cũng có thể giúp tôi giải quyết vấn đề này, vì tôi sẽ phát điên vì điều này. Nếu tôi xây dựng dự án 10 lần, nó sẽ thành công trong 1 hoặc 2 lần thử.

Điều tôi hiểu từ nhật ký lỗi là vấn đề đi kèm với việc kiểm tra loại. Nhưng, tôi không biết nó xảy ra ở đâu.

Một trong các dự án không thành công có trên 1000 lớp/đặc điểm (không bao gồm các lớp chữ hoa).

Chi tiết:

Ubuntu Server(14) 
Sbt : 0.13.6 and 0.13.8 tried 
Scala Version : 2.11.6 
JDK: 1.8 

Một vài dòng lỗi được dán bên dưới:

java.lang.StackOverflowError 
    at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:696) 
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396) 
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423) 
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374) 
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$96.apply(Typers.scala:4523) 
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$96.apply(Typers.scala:4523) 
    at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:680) 
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4522) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4578) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5343) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5360) 
    at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:696) 
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396) 
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423) 
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:5472) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:5480) 
    at scala.tools.nsc.transform.Erasure$Eraser.adaptMember(Erasure.scala:642) 
    at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:696) 
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396) 
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423) 
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374) 
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$96.apply(Typers.scala:4523) 
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$96.apply(Typers.scala:4523) 
    at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:680) 
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4522) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4578) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5343) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5360) 
    at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:696) 
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396) 
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423) 
    at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedArg(Typers.scala:3163) 
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$class.typedArgWithFormal$1(PatternTypers.scala:112) 
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$$anonfun$2.apply(PatternTypers.scala:115) 
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$$anonfun$2.apply(PatternTypers.scala:115) 
    at scala.runtime.Tuple2Zipped$$anonfun$map$extension$1.apply(Tuple2Zipped.scala:46) 
    at scala.runtime.Tuple2Zipped$$anonfun$map$extension$1.apply(Tuple2Zipped.scala:44) 
    at scala.collection.immutable.List.foreach(List.scala:381) 
    at scala.runtime.Tuple2Zipped$.map$extension(Tuple2Zipped.scala:44) 
    at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$class.typedArgsForFormals(PatternTypers.scala:115) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedArgsForFormals(Typers.scala:111) 
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$handleMonomorphicCall$1(Typers.scala:3469) 
    at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3494) 
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4544) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4578) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5343) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5360) 
    at scala.tools.nsc.transform.Erasure$Eraser.typed1(E 
+1

Bạn cần thay đổi '-Xss'. Hãy thử '-Xss3m' – jrudolph

+0

@jrudolph Tôi nên thực hiện thay đổi đó ở đâu? Trong sbtconfig.txt? Hay ở đâu đó khác? –

+0

Te cùng một cách bạn thay đổi '-Xmx'. Có thể trong tập lệnh trình khởi chạy sbt của bạn. – jrudolph

Trả lời

4

này đã ảnh hưởng Scala từ 2.11.4 đến 2.11.6 afaik. Nó không xuất hiện như cố định trên các ghi chú phát hành mới nhất cho 2.11.7.

May mắn thay sau track trên theo dõi vấn đề nó một đôi ticket với một câu trả lời ở đây trên stack overflow

Nếu không có mã nguồn là khó khăn hơn để cung cấp thêm chỉ dẫn nhưng điều đó chắc chắn phải là một con trỏ tốt để tìm vấn đề và áp dụng giải pháp được đề xuất

+0

Tôi đang sử dụng rất nhiều generics, nhưng như đã đề cập trong vé, chúng tôi không có biểu hiện với Bất kỳ. Tôi đã thử tất cả các thiết lập liên quan đến bộ nhớ, nhưng không sử dụng. –

+0

Bạn đã không đề cập đến rằng bạn không có biểu hiện.Dù sao bạn có thể thử a) tìm kiếm 'Manifest' sử dụng trong các thư viện bạn có thể đang sử dụng, có thể một số người trong số họ đang sử dụng nó b) Nâng cấp dự án của bạn lên Scala 2.11.7 c) Báo cáo lỗi tới scala-lang.org –

+0

Chỉ cần được rõ ràng, tôi đang sử dụng Manifest ở một số nơi cho json deserialization. Ví dụ: def extractEntity (json: String) (ngầm định m: Manifest [E]): E = phân tích (json) .extract [E], trong đó E là một đặc điểm được gọi là BaseEntity với một số trường phổ biến (id, isActive, vv) . Hiện tại, tôi đang sử dụng 2.11.6. Tôi sẽ thử với 2.11.7 và kiểm tra nếu vấn đề tồn tại. –

0

Tôi đã thử tất cả các thay đổi cấu hình nhưng không hoạt động trong máy. Vì vậy, tôi đã bỏ qua điều này trong gần một tháng. Gần đây, tôi đã cố gắng xây dựng dự án trong Jenkins và đã nhận được lỗi tương tự. Sau đó, tôi nâng cấp sbt 0.13.8 và thêm cờ jvm -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m -Xmx1024M -Xss16M vào cờ xây dựng jenkins. Và cho đến nay, tất cả các bộ sưu tập đã thành công. Tôi nhớ đã thêm cờ jvm vào tệp cấu hình sbt nhưng đã nhận được lỗi tương tự. Nhưng bây giờ, nó hoạt động tốt trong jenkins sau khi thêm lá cờ đó.

Các vấn đề liên quan