Hi Jim, isn't that just due to the fact that closing the Swing frame
kills the nrepl server JVM, but not the REPL client?

Also discussed here:
https://groups.google.com/forum/?fromgroups=#!topic/leiningen/QLcZIK2e5C0

I agree, it's annoying, but not sure how to workaround it? Maybe with
a heartbeat between nrepl client/server with the client closing the
repl session if the heartbeat been missing for x seconds...

Hth! K.


On 13 November 2012 23:25, Jim - FooBar(); <jimpil1...@gmail.com> wrote:
> The original project is already on github...I just committed the dummy
> namespace as well so you can have a look...
> so, do:
>
> git clone https://github.com/jimpil/Clondie24.git
> cd Clondie24
> lein2 repl
>
> (load-file "Clondie24.games.dummy.clj")
> (ns Clondie24.games.dummy)
> (-main)
>
> then close the frame without doing anything and try evaluating anything (e.g
> "(:name details)").
> it goes without saying that the same thing happens in all other proper games
> as well...
>
> thanks a million for looking into this :-)
>
> Jim
>
>
>
> On 13/11/12 22:35, Laurent PETIT wrote:
>>
>> Could you create a small lein2 project on github with what you
>> previously pasted in this thread correctly spread over files, etc., so
>> that it's really quick to reproduce the error?
>>
>> Thanks,
>>
>> Laurent
>>
>> Sent from a smartphone, please excuse the brevity/typos.
>>
>> Le 13 nov. 2012 ą 22:52, "Jim - FooBar();" <jimpil1...@gmail.com> a écrit
>> :
>>
>>> On 13/11/12 21:45, Dave Ray wrote:
>>>>
>>>> Dump the JVM's threads [1] and see what it's stuck on?
>>>
>>> What am I looking for? I don't see anything related with my project...IT
>>> is pretty obvious from the output though that everything is waiting! No clue
>>> what though...
>>>
>>> Jim
>>>
>>> -------------------------------------------------------------------------------------------------------------------------------------
>>>
>>> 2012-11-13 21:47:16
>>> Full thread dump Java HotSpot(TM) 64-Bit Server VM (23.2-b09 mixed mode):
>>>
>>> "Thread-11" prio=10 tid=0x00007f4268022800 nid=0x1fc8 waiting on
>>> condition [0x00007f4258338000]
>>>    java.lang.Thread.State: TIMED_WAITING (parking)
>>>     at sun.misc.Unsafe.park(Native Method)
>>>     - parking to wait for  <0x00000000c286d270> (a
>>> java.util.concurrent.SynchronousQueue$TransferStack)
>>>     at
>>> java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
>>>     at
>>> java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460)
>>>     at
>>> java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:359)
>>>     at
>>> java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:942)
>>>     at
>>> clojure.tools.nrepl.transport$fn_transport$fn__1008.invoke(transport.clj:41)
>>>     at clojure.tools.nrepl.transport.FnTransport.recv(transport.clj:28)
>>>     at reply.eval_modes.nrepl$main$fn__1451.invoke(nrepl.clj:154)
>>>     at clojure.lang.AFn.run(AFn.java:24)
>>>     at java.lang.Thread.run(Thread.java:722)
>>>
>>> "NonBlockingInputStreamThread" daemon prio=10 tid=0x00007f42685d9000
>>> nid=0x1fc5 in Object.wait() [0x00007f4258439000]
>>>    java.lang.Thread.State: WAITING (on object monitor)
>>>     at java.lang.Object.wait(Native Method)
>>>     - waiting on <0x00000000c286b100> (a
>>> jline.internal.NonBlockingInputStream)
>>>     at
>>> jline.internal.NonBlockingInputStream.run(NonBlockingInputStream.java:278)
>>>     - locked <0x00000000c286b100> (a
>>> jline.internal.NonBlockingInputStream)
>>>     at java.lang.Thread.run(Thread.java:722)
>>>
>>> "process reaper" daemon prio=10 tid=0x00007f42685d5000 nid=0x1fbf waiting
>>> on condition [0x00007f4258461000]
>>>    java.lang.Thread.State: TIMED_WAITING (parking)
>>>     at sun.misc.Unsafe.park(Native Method)
>>>     - parking to wait for  <0x00000000c286d7e8> (a
>>> java.util.concurrent.SynchronousQueue$TransferStack)
>>>     at
>>> java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
>>>     at
>>> java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460)
>>>     at
>>> java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:359)
>>>     at
>>> java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:942)
>>>     at
>>> java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1043)
>>>     at
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1103)
>>>     at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>>     at java.lang.Thread.run(Thread.java:722)
>>>
>>> "clojure-agent-send-off-pool-3" prio=10 tid=0x00007f4214005000 nid=0x1fbd
>>> runnable [0x00007f4258560000]
>>>    java.lang.Thread.State: RUNNABLE
>>>     at java.net.PlainSocketImpl.socketAccept(Native Method)
>>>     at
>>> java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
>>>     at java.net.ServerSocket.implAccept(ServerSocket.java:522)
>>>     at java.net.ServerSocket.accept(ServerSocket.java:490)
>>>     at clojure.tools.nrepl.server$accept_connection.invoke(server.clj:32)
>>>     at clojure.core$binding_conveyor_fn$fn__3989.invoke(core.clj:1822)
>>>     at clojure.lang.AFn.applyToHelper(AFn.java:161)
>>>     at clojure.lang.RestFn.applyTo(RestFn.java:132)
>>>     at clojure.lang.Agent$Action.doRun(Agent.java:116)
>>>     at clojure.lang.Agent$Action.run(Agent.java:165)
>>>     at
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>>>     at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>>     at java.lang.Thread.run(Thread.java:722)
>>>
>>> "clojure-agent-send-off-pool-2" prio=10 tid=0x00007f4214003800 nid=0x1fbb
>>> waiting on condition [0x00007f4258663000]
>>>    java.lang.Thread.State: TIMED_WAITING (parking)
>>>     at sun.misc.Unsafe.park(Native Method)
>>>     - parking to wait for  <0x00000000c286e000> (a
>>> java.util.concurrent.SynchronousQueue$TransferStack)
>>>     at
>>> java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
>>>     at
>>> java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460)
>>>     at
>>> java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:359)
>>>     at
>>> java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:942)
>>>     at
>>> clojure.tools.nrepl.transport$fn_transport$fn__1008.invoke(transport.clj:41)
>>>     at clojure.tools.nrepl.transport.FnTransport.recv(transport.clj:28)
>>>     at clojure.tools.nrepl.transport.FnTransport.recv(transport.clj:27)
>>>     at clojure.tools.nrepl.server$handle.invoke(server.clj:24)
>>>     at
>>> clojure.tools.nrepl.server$accept_connection$fn__1256.invoke(server.clj:35)
>>>     at clojure.core$binding_conveyor_fn$fn__3989.invoke(core.clj:1819)
>>>     at clojure.lang.AFn.call(AFn.java:18)
>>>     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
>>>     at java.util.concurrent.FutureTask.run(FutureTask.java:166)
>>>     at
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>>>     at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>>     at java.lang.Thread.run(Thread.java:722)
>>>
>>> "process reaper" daemon prio=10 tid=0x00007f422002a000 nid=0x1fa8 waiting
>>> on condition [0x00007f425888d000]
>>>    java.lang.Thread.State: TIMED_WAITING (parking)
>>>     at sun.misc.Unsafe.park(Native Method)
>>>     - parking to wait for  <0x00000000c286d7e8> (a
>>> java.util.concurrent.SynchronousQueue$TransferStack)
>>>     at
>>> java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
>>>     at
>>> java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460)
>>>     at
>>> java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:359)
>>>     at
>>> java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:942)
>>>     at
>>> java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1043)
>>>     at
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1103)
>>>     at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>>     at java.lang.Thread.run(Thread.java:722)
>>>
>>> "clojure-agent-send-off-pool-1" prio=10 tid=0x00007f4268875800 nid=0x1fa6
>>> waiting on condition [0x00007f425898e000]
>>>    java.lang.Thread.State: TIMED_WAITING (parking)
>>>     at sun.misc.Unsafe.park(Native Method)
>>>     - parking to wait for  <0x00000000c28130a8> (a
>>> java.util.concurrent.SynchronousQueue$TransferStack)
>>>     at
>>> java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
>>>     at
>>> java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460)
>>>     at
>>> java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:359)
>>>     at
>>> java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:942)
>>>     at
>>> java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1043)
>>>     at
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1103)
>>>     at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>>     at java.lang.Thread.run(Thread.java:722)
>>>
>>> "clojure-agent-send-off-pool-0" prio=10 tid=0x00007f422000c800 nid=0x1fa5
>>> waiting on condition [0x00007f4258a8f000]
>>>    java.lang.Thread.State: TIMED_WAITING (parking)
>>>     at sun.misc.Unsafe.park(Native Method)
>>>     - parking to wait for  <0x00000000c28130a8> (a
>>> java.util.concurrent.SynchronousQueue$TransferStack)
>>>     at
>>> java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
>>>     at
>>> java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460)
>>>     at
>>> java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:359)
>>>     at
>>> java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:942)
>>>     at
>>> java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1043)
>>>     at
>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1103)
>>>     at
>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>>>     at java.lang.Thread.run(Thread.java:722)
>>>
>>> "Service Thread" daemon prio=10 tid=0x00007f42680fa800 nid=0x1fa2
>>> runnable [0x0000000000000000]
>>>    java.lang.Thread.State: RUNNABLE
>>>
>>> "C1 CompilerThread2" daemon prio=10 tid=0x00007f42680f8000 nid=0x1fa1
>>> waiting on condition [0x0000000000000000]
>>>    java.lang.Thread.State: RUNNABLE
>>>
>>> "C2 CompilerThread1" daemon prio=10 tid=0x00007f42680f6000 nid=0x1fa0
>>> waiting on condition [0x0000000000000000]
>>>    java.lang.Thread.State: RUNNABLE
>>>
>>> "C2 CompilerThread0" daemon prio=10 tid=0x00007f42680f3000 nid=0x1f9f
>>> waiting on condition [0x0000000000000000]
>>>    java.lang.Thread.State: RUNNABLE
>>>
>>> "Signal Dispatcher" daemon prio=10 tid=0x00007f42680f1000 nid=0x1f9e
>>> waiting on condition [0x0000000000000000]
>>>    java.lang.Thread.State: RUNNABLE
>>>
>>> "Finalizer" daemon prio=10 tid=0x00007f42680a4000 nid=0x1f9d in
>>> Object.wait() [0x00007f42604f6000]
>>>    java.lang.Thread.State: WAITING (on object monitor)
>>>     at java.lang.Object.wait(Native Method)
>>>     - waiting on <0x00000000c2546250> (a
>>> java.lang.ref.ReferenceQueue$Lock)
>>>     at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
>>>     - locked <0x00000000c2546250> (a java.lang.ref.ReferenceQueue$Lock)
>>>     at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
>>>     at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:177)
>>>
>>> "Reference Handler" daemon prio=10 tid=0x00007f42680a1800 nid=0x1f9c in
>>> Object.wait() [0x00007f42605f7000]
>>>    java.lang.Thread.State: WAITING (on object monitor)
>>>     at java.lang.Object.wait(Native Method)
>>>     - waiting on <0x00000000c25460a8> (a java.lang.ref.Reference$Lock)
>>>     at java.lang.Object.wait(Object.java:503)
>>>     at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
>>>     - locked <0x00000000c25460a8> (a java.lang.ref.Reference$Lock)
>>>
>>> "main" prio=10 tid=0x00007f4268009000 nid=0x1f96 runnable
>>> [0x00007f426f764000]
>>>    java.lang.Thread.State: RUNNABLE
>>>     at java.lang.Class.getClassLoader0(Native Method)
>>>     at java.lang.ClassLoader.getCallerClassLoader(ClassLoader.java:1537)
>>>     at java.lang.Class.getMethods(Class.java:1426)
>>>     at clojure.lang.Reflector.getMethods(Reflector.java:357)
>>>     at
>>> clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:296)
>>>     at
>>> reply.eval_modes.nrepl$session_responses$fn__1414.invoke(nrepl.clj:33)
>>>     at clojure.lang.LazySeq.sval(LazySeq.java:42)
>>>     - eliminated <0x00000000f9b1d060> (a clojure.lang.LazySeq)
>>>     at clojure.lang.LazySeq.seq(LazySeq.java:60)
>>>     - locked <0x00000000f9b1d060> (a clojure.lang.LazySeq)
>>>     at clojure.lang.RT.seq(RT.java:473)
>>>     at clojure.core$seq.invoke(core.clj:133)
>>>     at clojure.core$filter$fn__4106.invoke(core.clj:2470)
>>>     at clojure.lang.LazySeq.sval(LazySeq.java:42)
>>>     - locked <0x00000000f9b1d0b8> (a clojure.lang.LazySeq)
>>>     at clojure.lang.LazySeq.seq(LazySeq.java:67)
>>>     - locked <0x00000000c2d835f0> (a clojure.lang.LazySeq)
>>>     at clojure.lang.RT.seq(RT.java:473)
>>>     at clojure.core$seq.invoke(core.clj:133)
>>>     at clojure.core$take_while$fn__4116.invoke(core.clj:2511)
>>>     at clojure.lang.LazySeq.sval(LazySeq.java:42)
>>>     - eliminated <0x00000000c2d83628> (a clojure.lang.LazySeq)
>>>     at clojure.lang.LazySeq.seq(LazySeq.java:60)
>>>     - locked <0x00000000c2d83628> (a clojure.lang.LazySeq)
>>>     at clojure.lang.RT.seq(RT.java:473)
>>>     at clojure.core$seq.invoke(core.clj:133)
>>>     at reply.eval_modes.nrepl$execute_with_client.invoke(nrepl.clj:46)
>>>     at reply.eval_modes.nrepl$run_repl.invoke(nrepl.clj:96)
>>>     at reply.eval_modes.nrepl$main.invoke(nrepl.clj:171)
>>>     at reply.main$launch_nrepl$fn__1706.invoke(main.clj:58)
>>>     at clojure.core$with_redefs_fn.invoke(core.clj:6585)
>>>     at reply.main$launch_nrepl.invoke(main.clj:55)
>>>     at leiningen.repl$repl.invoke(repl.clj:150)
>>>     at clojure.lang.Var.invoke(Var.java:415)
>>>     at clojure.lang.AFn.applyToHelper(AFn.java:161)
>>>     at clojure.lang.Var.applyTo(Var.java:532)
>>>     at clojure.core$apply.invoke(core.clj:603)
>>>     at leiningen.core.main$resolve_task$fn__836.doInvoke(main.clj:123)
>>>     at clojure.lang.RestFn.invoke(RestFn.java:410)
>>>     at clojure.lang.AFn.applyToHelper(AFn.java:161)
>>>     at clojure.lang.RestFn.applyTo(RestFn.java:132)
>>>     at clojure.lang.AFunction$1.doInvoke(AFunction.java:29)
>>>     at clojure.lang.RestFn.applyTo(RestFn.java:137)
>>>     at clojure.core$apply.invoke(core.clj:603)
>>>     at leiningen.core.main$apply_task.invoke(main.clj:146)
>>>     at leiningen.core.main$_main$fn__895.invoke(main.clj:223)
>>>     at leiningen.core.main$_main.doInvoke(main.clj:208)
>>>     at clojure.lang.RestFn.invoke(RestFn.java:408)
>>>     at clojure.lang.Var.invoke(Var.java:415)
>>>     at clojure.lang.AFn.applyToHelper(AFn.java:161)
>>>     at clojure.lang.Var.applyTo(Var.java:532)
>>>     at clojure.core$apply.invoke(core.clj:601)
>>>     at clojure.main$main_opt.invoke(main.clj:324)
>>>     at clojure.main$main.doInvoke(main.clj:427)
>>>     at clojure.lang.RestFn.invoke(RestFn.java:436)
>>>     at clojure.lang.Var.invoke(Var.java:423)
>>>     at clojure.lang.AFn.applyToHelper(AFn.java:167)
>>>     at clojure.lang.Var.applyTo(Var.java:532)
>>>     at clojure.main.main(main.java:37)
>>>
>>> "VM Thread" prio=10 tid=0x00007f426809a000 nid=0x1f9b runnable
>>>
>>> "GC task thread#0 (ParallelGC)" prio=10 tid=0x00007f4268017000 nid=0x1f97
>>> runnable
>>>
>>> "GC task thread#1 (ParallelGC)" prio=10 tid=0x00007f4268019000 nid=0x1f98
>>> runnable
>>>
>>> "GC task thread#2 (ParallelGC)" prio=10 tid=0x00007f426801a800 nid=0x1f99
>>> runnable
>>>
>>> "GC task thread#3 (ParallelGC)" prio=10 tid=0x00007f426801c800 nid=0x1f9a
>>> runnable
>>>
>>> "VM Periodic Task Thread" prio=10 tid=0x00007f4268105800 nid=0x1fa3
>>> waiting on condition
>>>
>>> JNI global references: 236
>>>
>>> Heap
>>> PSYoungGen      total 320832K, used 239091K [0x00000000eb600000,
>>> 0x00000000ffe50000, 0x0000000100000000)
>>>   eden space 304960K, 78% used
>>> [0x00000000eb600000,0x00000000f9f6cd28,0x00000000fdfd0000)
>>>   from space 15872K, 0% used
>>> [0x00000000feed0000,0x00000000feee0000,0x00000000ffe50000)
>>>   to   space 15360K, 0% used
>>> [0x00000000fdfd0000,0x00000000fdfd0000,0x00000000feed0000)
>>> ParOldGen       total 58304K, used 11805K [0x00000000c2200000,
>>> 0x00000000c5af0000, 0x00000000eb600000)
>>>   object space 58304K, 20% used
>>> [0x00000000c2200000,0x00000000c2d875f0,0x00000000c5af0000)
>>> PSPermGen       total 38336K, used 22466K [0x00000000bd000000,
>>> 0x00000000bf570000, 0x00000000c2200000)
>>>   object space 38336K, 58% used
>>> [0x00000000bd000000,0x00000000be5f0a70,0x00000000bf570000)
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clojure@googlegroups.com
>>> Note that posts from new members are moderated - please be patient with
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+unsubscr...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en



-- 
Karsten Schmidt
+44 7875 524 336

http://postspectacular.com | http://toxiclibs.org | http://toxi.co.uk

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to