Add new attachment

Only authorized users are allowed to upload new attachments.

This page (revision-47) was last changed on 27-Sep-2017 15:19 by John Thywissen  

This page was created on 27-Sep-2010 12:18 by JohnThywissen

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Difference between version and

At line 13 removed 56 lines
!! 11: {{orc.run.extensions.~ManyActorBasedScheduler}} causes a {{~ClassCastException}}
| __Reporter:__ | John Thywissen
| __Report date-time:__ | 2011-01-22 19:17
| __Orc version:__ | 2.0.0 rev. 2382
! Code:
While running the Orc7 test case. Appears to be a heisenbug.
! Actual output:
{{{
orc.run.extensions.ManyActorBasedScheduler$Worker@5176477b: caught java.lang.ClassCastException: java.lang.Thread cannot be cast to scala.concurrent.forkjoin.ForkJoinWorkerThread
java.lang.ClassCastException: java.lang.Thread cannot be cast to scala.concurrent.forkjoin.ForkJoinWorkerThread
at scala.concurrent.forkjoin.ForkJoinTask.fork(ForkJoinTask.java:481)
at scala.actors.scheduler.ForkJoinScheduler.executeFromActor(ForkJoinScheduler.scala:121)
at scala.actors.scheduler.DelegatingScheduler$class.executeFromActor(DelegatingScheduler.scala:42)
at scala.actors.Scheduler$.executeFromActor(Scheduler.scala:21)
at scala.actors.Actor$class.scheduleActor(Actor.scala:628)
at orc.run.extensions.ManyActorBasedScheduler$Worker.scheduleActor(ManyActorBasedScheduler.scala:77)
at scala.actors.Reactor$class.resumeReceiver(Reactor.scala:131)
at orc.run.extensions.ManyActorBasedScheduler$Worker.scala$actors$ReplyReactor$$super$resumeReceiver(ManyActorBasedScheduler.scala:77)
at scala.actors.ReplyReactor$class.resumeReceiver(ReplyReactor.scala:69)
at orc.run.extensions.ManyActorBasedScheduler$Worker.resumeReceiver(ManyActorBasedScheduler.scala:77)
at scala.actors.Actor$class.searchMailbox(Actor.scala:478)
at orc.run.extensions.ManyActorBasedScheduler$Worker.searchMailbox(ManyActorBasedScheduler.scala:77)
at scala.actors.Reactor$class.react(Reactor.scala:203)
at orc.run.extensions.ManyActorBasedScheduler$Worker.scala$actors$ReplyReactor$$super$react(ManyActorBasedScheduler.scala:77)
at scala.actors.ReplyReactor$class.react(ReplyReactor.scala:109)
at orc.run.extensions.ManyActorBasedScheduler$Worker.scala$actors$Actor$$super$react(ManyActorBasedScheduler.scala:77)
at scala.actors.Actor$class.react(Actor.scala:606)
at orc.run.extensions.ManyActorBasedScheduler$Worker.react(ManyActorBasedScheduler.scala:77)
at orc.run.extensions.ManyActorBasedScheduler$Worker$$anonfun$act$1.apply(ManyActorBasedScheduler.scala:84)
at orc.run.extensions.ManyActorBasedScheduler$Worker$$anonfun$act$1.apply(ManyActorBasedScheduler.scala:84)
at scala.actors.Reactor$class.seq(Reactor.scala:280)
at orc.run.extensions.ManyActorBasedScheduler$Worker.seq(ManyActorBasedScheduler.scala:77)
at scala.actors.Reactor$$anon$3.andThen(Reactor.scala:258)
at scala.actors.Combinators$class.loop(Combinators.scala:26)
at orc.run.extensions.ManyActorBasedScheduler$Worker.loop(ManyActorBasedScheduler.scala:77)
at scala.actors.Combinators$$anonfun$loop$1.apply(Combinators.scala:26)
at scala.actors.Combinators$$anonfun$loop$1.apply(Combinators.scala:26)
at scala.actors.Reactor$$anonfun$seq$1$$anonfun$apply$1.apply(Reactor.scala:277)
at scala.actors.ReactorTask.run(ReactorTask.scala:34)
at scala.actors.threadpool.ThreadPoolExecutor.runWorker(Unknown Source)
at scala.actors.threadpool.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Thread.java:680)
}}}
! Reporter's comments:
Apparently, this comes when one "uses the lightweight react when using the thread proxy actor".
----
At line 460 added 60 lines
!! %%strike 11: {{orc.run.extensions.~ManyActorBasedScheduler}} causes a {{~ClassCastException}} %% (fixed)
| __Reporter:__ | John Thywissen
| __Report date-time:__ | 2011-01-22 19:17
| __Orc version:__ | 2.0.0 rev. 2382
! Code:
While running the Orc7 test case. Appears to be a heisenbug.
! Actual output:
{{{
orc.run.extensions.ManyActorBasedScheduler$Worker@5176477b: caught java.lang.ClassCastException: java.lang.Thread cannot be cast to scala.concurrent.forkjoin.ForkJoinWorkerThread
java.lang.ClassCastException: java.lang.Thread cannot be cast to scala.concurrent.forkjoin.ForkJoinWorkerThread
at scala.concurrent.forkjoin.ForkJoinTask.fork(ForkJoinTask.java:481)
at scala.actors.scheduler.ForkJoinScheduler.executeFromActor(ForkJoinScheduler.scala:121)
at scala.actors.scheduler.DelegatingScheduler$class.executeFromActor(DelegatingScheduler.scala:42)
at scala.actors.Scheduler$.executeFromActor(Scheduler.scala:21)
at scala.actors.Actor$class.scheduleActor(Actor.scala:628)
at orc.run.extensions.ManyActorBasedScheduler$Worker.scheduleActor(ManyActorBasedScheduler.scala:77)
at scala.actors.Reactor$class.resumeReceiver(Reactor.scala:131)
at orc.run.extensions.ManyActorBasedScheduler$Worker.scala$actors$ReplyReactor$$super$resumeReceiver(ManyActorBasedScheduler.scala:77)
at scala.actors.ReplyReactor$class.resumeReceiver(ReplyReactor.scala:69)
at orc.run.extensions.ManyActorBasedScheduler$Worker.resumeReceiver(ManyActorBasedScheduler.scala:77)
at scala.actors.Actor$class.searchMailbox(Actor.scala:478)
at orc.run.extensions.ManyActorBasedScheduler$Worker.searchMailbox(ManyActorBasedScheduler.scala:77)
at scala.actors.Reactor$class.react(Reactor.scala:203)
at orc.run.extensions.ManyActorBasedScheduler$Worker.scala$actors$ReplyReactor$$super$react(ManyActorBasedScheduler.scala:77)
at scala.actors.ReplyReactor$class.react(ReplyReactor.scala:109)
at orc.run.extensions.ManyActorBasedScheduler$Worker.scala$actors$Actor$$super$react(ManyActorBasedScheduler.scala:77)
at scala.actors.Actor$class.react(Actor.scala:606)
at orc.run.extensions.ManyActorBasedScheduler$Worker.react(ManyActorBasedScheduler.scala:77)
at orc.run.extensions.ManyActorBasedScheduler$Worker$$anonfun$act$1.apply(ManyActorBasedScheduler.scala:84)
at orc.run.extensions.ManyActorBasedScheduler$Worker$$anonfun$act$1.apply(ManyActorBasedScheduler.scala:84)
at scala.actors.Reactor$class.seq(Reactor.scala:280)
at orc.run.extensions.ManyActorBasedScheduler$Worker.seq(ManyActorBasedScheduler.scala:77)
at scala.actors.Reactor$$anon$3.andThen(Reactor.scala:258)
at scala.actors.Combinators$class.loop(Combinators.scala:26)
at orc.run.extensions.ManyActorBasedScheduler$Worker.loop(ManyActorBasedScheduler.scala:77)
at scala.actors.Combinators$$anonfun$loop$1.apply(Combinators.scala:26)
at scala.actors.Combinators$$anonfun$loop$1.apply(Combinators.scala:26)
at scala.actors.Reactor$$anonfun$seq$1$$anonfun$apply$1.apply(Reactor.scala:277)
at scala.actors.ReactorTask.run(ReactorTask.scala:34)
at scala.actors.threadpool.ThreadPoolExecutor.runWorker(Unknown Source)
at scala.actors.threadpool.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Thread.java:680)
}}}
! Reporter's comments:
Apparently, this comes when one "uses the lightweight react when using the thread proxy actor".
! Orc team response
|| Analysis
| __Repeatable:__ | Inconsistent
| __Root Cause:__ | Speculation: When thread pool is shutting down, submitted tasks get run on caller's thread. If the caller is the main thread, and the task is a Reactor, the CCE above occurs.
| __Proposed Fix:__ | Replace token scheduler with simpler one
|| Implementation
| __Fix Made:__ | __Rev:__ 2642 __Date:__ 30 Mar 2011 __By:__ jthywiss
----
At line 550 added 2 lines
----
Version Date Modified Size Author Changes ... Change note
47 27-Sep-2017 15:19 18.993 kB John Thywissen to previous Change Google Code link to GitHub
46 30-Mar-2011 13:23 18.995 kB JohnThywissen to previous | to last
45 30-Mar-2011 00:28 19.976 kB JohnThywissen to previous | to last
44 28-Mar-2011 20:38 19.534 kB DavidKitchin to previous | to last
43 28-Mar-2011 09:26 19.459 kB JohnThywissen to previous | to last
42 28-Mar-2011 09:26 19.451 kB JohnThywissen to previous | to last
41 28-Mar-2011 00:19 19.451 kB DavidKitchin to previous | to last
« This page (revision-47) was last changed on 27-Sep-2017 15:19 by John Thywissen