Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

java.lang.OutOfMemoryError: unable to create new native thread when use actor #8937

Closed
scabug opened this issue Oct 23, 2014 · 3 comments
Closed
Assignees
Milestone

Comments

@scabug
Copy link

scabug commented Oct 23, 2014

java.lang.OutOfMemoryError: unable to create new native thread
	at java.lang.Thread.start0(Native Method)
	at java.lang.Thread.start(Thread.java:597)
	at scala.concurrent.forkjoin.ForkJoinPool.createAndStartAddedWorkers(ForkJoinPool.java:524)
	at scala.concurrent.forkjoin.ForkJoinPool.setParallelism(ForkJoinPool.java:749)
	at scala.actors.scheduler.ForkJoinScheduler.makeNewPool(ForkJoinScheduler.scala:44)
	at scala.actors.scheduler.ForkJoinScheduler.<init>(ForkJoinScheduler.scala:15)
	at scala.actors.scheduler.ForkJoinScheduler.<init>(ForkJoinScheduler.scala:29)
	at scala.actors.scheduler.ForkJoinScheduler.<init>(ForkJoinScheduler.scala:33)
	at scala.actors.scheduler.ForkJoinScheduler.<init>(ForkJoinScheduler.scala:37)
	at scala.actors.Scheduler$.makeNewScheduler(Scheduler.scala:33)
	at scala.actors.scheduler.DelegatingScheduler$class.newActor(DelegatingScheduler.scala:63)
	at scala.actors.Scheduler$.newActor(Scheduler.scala:21)
	at scala.actors.Reactor$class.dostart(Reactor.scala:221)
	at scala.actors.Actor$$anon$1.scala$actors$Actor$$super$dostart(Actor.scala:132)
	at scala.actors.Actor$class.dostart(Actor.scala:709)
	at scala.actors.Actor$$anon$1.dostart(Actor.scala:132)
	at scala.actors.Reactor$class.start(Reactor.scala:230)
	at scala.actors.Actor$$anon$1.scala$actors$Actor$$super$start(Actor.scala:132)
	at scala.actors.Actor$class.start(Actor.scala:713)
	at scala.actors.Actor$$anon$1.start(Actor.scala:132)
	at scala.actors.Actor$.actor(Actor.scala:136)
	at Main$$anon$1$$anonfun$isPerfectConcurrent$1.apply(testActor.scala:18)
	at Main$$anon$1$$anonfun$isPerfectConcurrent$1.apply(testActor.scala:14)
	at scala.collection.immutable.Range.foreach(Range.scala:81)
	at Main$$anon$1.isPerfectConcurrent(testActor.scala:14)
	at Main$$anon$1.<init>(testActor.scala:32)
	at Main$.main(testActor.scala:1)
	at Main.main(testActor.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at scala.tools.nsc.util.ScalaClassLoader$$anonfun$run$1.apply(ScalaClassLoader.scala:78)
	at scala.tools.nsc.util.ScalaClassLoader$class.asContext(ScalaClassLoader.scala:24)
	at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.asContext(ScalaClassLoader.scala:88)
	at scala.tools.nsc.util.ScalaClassLoader$class.run(ScalaClassLoader.scala:78)
	at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:101)
	at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:33)
	at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:40)
	at scala.tools.nsc.ScriptRunner.scala$tools$nsc$ScriptRunner$$runCompiled(ScriptRunner.scala:171)
	at scala.tools.nsc.ScriptRunner$$anonfun$runScript$1.apply(ScriptRunner.scala:188)
	at scala.tools.nsc.ScriptRunner$$anonfun$runScript$1.apply(ScriptRunner.scala:188)
	at scala.tools.nsc.ScriptRunner$$anonfun$withCompiledScript$1.apply$mcZ$sp(ScriptRunner.scala:157)
	at scala.tools.nsc.ScriptRunner$$anonfun$withCompiledScript$1.apply(ScriptRunner.scala:131)
	at scala.tools.nsc.ScriptRunner$$anonfun$withCompiledScript$1.apply(ScriptRunner.scala:131)
	at scala.tools.nsc.util.package$.waitingForThreads(package.scala:26)
	at scala.tools.nsc.ScriptRunner.withCompiledScript(ScriptRunner.scala:130)
	at scala.tools.nsc.ScriptRunner.runScript(ScriptRunner.scala:188)
	at scala.tools.nsc.ScriptRunner.runScriptAndCatch(ScriptRunner.scala:201)
	at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:58)
	at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:80)
	at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:89)
	at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)

and my codes:

def sumOfFactorsInRange(lower: Int, upper: Int, number: Int) = {
  (0 /: (lower to upper)) {
    (sum, i) => if (number % i == 0) sum + i else sum
  }
}

def isPerfectConcurrent(candidate: Int) = {
  val RANGE = 100000
  val numberOfPartitions = (candidate.toDouble / RANGE).ceil.toInt
  val caller = self

  for (i <- 0 until numberOfPartitions) {
    val lower = i * RANGE + 1
    val upper = candidate min (i + 1) * RANGE

    actor {
      caller ! sumOfFactorsInRange(lower, upper, candidate)
    }
  }

  val sum = (0 /: (0 until numberOfPartitions)) {
    (partialSum, i) =>
      receive {
        case sumInRange: Int => partialSum + sumInRange
      }
  }

  2 * candidate == sum
}

println("6 is perfect? " + isPerfectConcurrent(6))
@scabug
Copy link
Author

scabug commented Oct 23, 2014

Imported From: https://issues.scala-lang.org/browse/SI-8937?orig=1
Reporter: eugene (sf0606)

@scabug
Copy link
Author

scabug commented Oct 24, 2014

@retronym said (edited on Oct 24, 2014 11:13:51 AM UTC):
The Scala actors library is deprecated, we advise users to migrate to Akka actors now.

I am not able to reproduce the error locally.

% ~/scala/2.11/bin/scalac sandbox/test.scala && ~/scala/2.11/bin/scala -nc Test
warning: there were three deprecation warnings; re-run with -deprecation for details
one warning found
6 is perfect? true

% ~/scala/2.10.4/bin/scalac sandbox/test.scala && ~/scala/2.10.4/bin/scala  -nc Test
6 is perfect? true

Can you please provide a transcript from a shell session that reproduces the error? Which Scala version are you using?

@scabug scabug closed this as completed Oct 24, 2014
@scabug
Copy link
Author

scabug commented Oct 28, 2014

eugene (sf0606) said:
Thank you, i found some problems in my dev-envirment, it`s a problem about Java.

@scabug scabug added the needinfo label Apr 7, 2017
@scabug scabug added this to the Backlog milestone Apr 7, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants