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

MAC OS Snow leopard issue. #26

Closed
alanheppenstall opened this issue Jan 28, 2013 · 26 comments
Closed

MAC OS Snow leopard issue. #26

alanheppenstall opened this issue Jan 28, 2013 · 26 comments
Assignees
Labels
Milestone

Comments

@alanheppenstall
Copy link

Possibly a duplicate of #24 and #8 but with the latest jars from 0.3.7 (http://repo.sarxos.pl/maven2/index.php?dir=com%2Fgithub%2Fsarxos%2Fwebcam-capture%2F0.3.7-beta1%2F) I get the following:

15:35:19.852 [AWT-EventQueue-0] INFO  c.g.sarxos.webcam.WebcamDriverUtils - Searching driver com.github.sarxos.webcam.ds.openimaj.OpenImajDriver
15:35:19.858 [AWT-EventQueue-0] DEBUG c.g.sarxos.webcam.WebcamDriverUtils - Driver com.github.sarxos.webcam.ds.openimaj.OpenImajDriver not found
15:35:19.858 [AWT-EventQueue-0] INFO  c.g.sarxos.webcam.WebcamDriverUtils - Searching driver com.github.sarxos.webcam.ds.civil.LtiCivilDriver
15:35:19.859 [AWT-EventQueue-0] DEBUG c.g.sarxos.webcam.WebcamDriverUtils - Driver com.github.sarxos.webcam.ds.civil.LtiCivilDriver not found
15:35:19.859 [AWT-EventQueue-0] INFO  c.g.sarxos.webcam.WebcamDriverUtils - Searching driver com.github.sarxos.webcam.ds.jmf.JmfDriver
15:35:19.859 [AWT-EventQueue-0] DEBUG c.g.sarxos.webcam.WebcamDriverUtils - Driver com.github.sarxos.webcam.ds.jmf.JmfDriver not found
15:35:19.859 [AWT-EventQueue-0] INFO  com.github.sarxos.webcam.Webcam - Webcam driver has not been found, default one will be used!
15:35:19.868 [webcam-discovery] DEBUG c.g.s.w.d.b.WebcamDefaultDriver - Searching devices
Not enough args for null OpenIMAJGrabber.startSession(int, int, double)
15:35:20.400 [webcam-discovery] DEBUG c.g.s.w.d.b.WebcamDefaultDriver - Found device Built-in iSight 0x2460000005ac8507
15:35:20.405 [AWT-EventQueue-0] INFO  com.github.sarxos.webcam.Webcam - Opening webcam Built-in iSight 0x2460000005ac8507

OSx Snow Leopard/Eclipse Indigo/java-6-sun-1.6.0_37 (64bit)

@sarxos
Copy link
Owner

sarxos commented Jan 28, 2013

Hi @alanheppenstall,

Can you try the same with latest version, which is 0.3.7 (not beta as in provided example)? Please let me know if it's reproducible.

@alanheppenstall
Copy link
Author

Hi @sarxos , thanks for getting back to me!

With that version (all the JARs added to the build in place of the beta) I got:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Not enough args for null OpenIMAJGrabber.startSession(int, int, double)

And with slf4j-simple-1.7.2.jar added (is that correct?) I get:

[AWT-EventQueue-0] INFO com.github.sarxos.webcam.WebcamDriverUtils - Searching driver com.github.sarxos.webcam.ds.openimaj.OpenImajDriver
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.WebcamDriverUtils - Searching driver com.github.sarxos.webcam.ds.civil.LtiCivilDriver
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.WebcamDriverUtils - Searching driver com.github.sarxos.webcam.ds.jmf.JmfDriver
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.Webcam - Webcam driver has not been found, default one will be used!
Not enough args for null OpenIMAJGrabber.startSession(int, int, double)
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.Webcam - Opening webcam Built-in iSight 0x2460000005ac8507

@sarxos
Copy link
Owner

sarxos commented Jan 28, 2013

Ok, so if the problem is reproducible in 0.3.7, is it possible for you to prepare threads dump when the program is waiting for webcam to be open? This can be done by the following:

  1. Run your program,
  2. Wait for it to hang on "opening webcam",
  3. Execute the following in terminal and note down your program process ID:
$ ps -ef | grep -i java

Now use this process ID as the argument to jstack command:

$ jstack (pid.here) > stack.log

This command will create *.log file containing threads dump which specifies in details which thread is waiting on object monitor. I will need it to locate the problem.

@sarxos
Copy link
Owner

sarxos commented Jan 28, 2013

Here is example of this procedure:

sarxos@sarxos-comp:~$ ps -ef | grep -i java
sarxos    6746  6745  5 22:14 ?        00:02:15 /usr/bin/java -Dosgi.requiredJavaVersion=1.5 -Dhelp.lucene.tokenizer=standard -XX:MaxPermSize=256m -Xms40m -Xmx512m -jar /opt/eclipse/eclipse-j2se//plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar -os linux -ws gtk -arch x86_64 -showsplash /opt/eclipse/eclipse-j2se//plugins/org.eclipse.platform_4.2.1.v201209141800/splash.bmp -launcher /opt/eclipse/eclipse-j2se/eclipse -name Eclipse --launcher.library /opt/eclipse/eclipse-j2se//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20120522-1813/eclipse_1502.so -startup /opt/eclipse/eclipse-j2se//plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar --launcher.overrideVmargs -exitdata 188009 -product org.eclipse.epp.package.java.product -vm /usr/bin/java -vmargs -Dosgi.requiredJavaVersion=1.5 -Dhelp.lucene.tokenizer=standard -XX:MaxPermSize=256m -Xms40m -Xmx512m -jar /opt/eclipse/eclipse-j2se//plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
sarxos    7994  6746  4 22:54 ?        00:00:00 /usr/lib/jvm/java-6-oracle/bin/java -Dfile.encoding=UTF-8 -classpath /home/sarxos/workspace-j2se/webcam-capture/webcam-capture/target/classes:/home/sarxos/.m2/repository/com/jhlabs/filters/2.0.235-1/filters-2.0.235-1.jar:/home/sarxos/.m2/repository/com/nativelibs4java/bridj/0.6.2/bridj-0.6.2.jar:/home/sarxos/.m2/repository/com/google/android/tools/dx/1.7/dx-1.7.jar:/home/sarxos/.m2/repository/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar:/home/sarxos/.m2/repository/ch/qos/logback/logback-classic/1.0.9/logback-classic-1.0.9.jar:/home/sarxos/.m2/repository/ch/qos/logback/logback-core/1.0.9/logback-core-1.0.9.jar Test
sarxos    8016  4581  0 22:54 pts/0    00:00:00 grep --color=auto -i java
sarxos@sarxos-comp:~$ jstack 7994 > ~/Desktop/jstack.log

@alanheppenstall
Copy link
Author

Thanks, here it is:

2013-01-28 22:11:19
Full thread dump Java HotSpot(TM) Client VM (20.12-b01-434 mixed mode):

"Attach Listener" daemon prio=9 tid=000000001348e800 nid=0xb2a11000 waiting on condition [0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Worker-14" prio=5 tid=0000000013827800 nid=0xb290f000 in Object.wait() [00000000b290e000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <00000000181e92c8> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <00000000181e92c8> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)

"Process monitor" daemon prio=5 tid=0000000013826000 nid=0xb270b000 in Object.wait() [00000000b270a000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0000000016830268> (a java.lang.UNIXProcess)
    at java.lang.Object.wait(Object.java:485)
    at java.lang.UNIXProcess.waitFor(UNIXProcess.java:115)
    - locked <0000000016830268> (a java.lang.UNIXProcess)
    at org.eclipse.debug.core.model.RuntimeProcess$ProcessMonitorThread.run(RuntimeProcess.java:417)

"Input Stream Monitor" daemon prio=5 tid=0000000013825000 nid=0xb2585000 in Object.wait() [00000000b2584000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <000000001683a6d0> (a java.lang.Object)
    at java.lang.Object.wait(Object.java:485)
    at org.eclipse.debug.internal.core.InputStreamMonitor.writeNext(InputStreamMonitor.java:154)
    - locked <000000001683a6d0> (a java.lang.Object)
    at org.eclipse.debug.internal.core.InputStreamMonitor.write(InputStreamMonitor.java:124)
    at org.eclipse.debug.internal.core.InputStreamMonitor$1.run(InputStreamMonitor.java:99)
    at java.lang.Thread.run(Thread.java:680)

"Output Stream Monitor" daemon prio=1 tid=0000000013824000 nid=0xb1ef7000 runnable [00000000b1ef6000]
   java.lang.Thread.State: RUNNABLE
    at java.io.FileInputStream.readBytes(Native Method)
    at java.io.FileInputStream.read(FileInputStream.java:220)
    at java.lang.UNIXProcess$DeferredCloseInputStream.read(UNIXProcess.java:227)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
    - locked <00000000168385f0> (a java.io.BufferedInputStream)
    at java.io.FilterInputStream.read(FilterInputStream.java:90)
    at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:144)
    at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134)
    at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207)
    at java.lang.Thread.run(Thread.java:680)

"Output Stream Monitor" daemon prio=1 tid=0000000013823800 nid=0xb1df5000 runnable [00000000b1df4000]
   java.lang.Thread.State: RUNNABLE
    at java.io.FileInputStream.readBytes(Native Method)
    at java.io.FileInputStream.read(FileInputStream.java:220)
    at java.lang.UNIXProcess$DeferredCloseInputStream.read(UNIXProcess.java:227)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
    - locked <0000000016830810> (a java.io.BufferedInputStream)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
    - locked <0000000016836548> (a java.io.BufferedInputStream)
    at java.io.FilterInputStream.read(FilterInputStream.java:90)
    at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:144)
    at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134)
    at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207)
    at java.lang.Thread.run(Thread.java:680)

"process reaper" daemon prio=5 tid=00000000139acc00 nid=0xb1cf3000 runnable [00000000b1cf2000]
   java.lang.Thread.State: RUNNABLE
    at java.lang.UNIXProcess.waitForProcessExit(Native Method)
    at java.lang.UNIXProcess.access$900(UNIXProcess.java:17)
    at java.lang.UNIXProcess$2$1.run(UNIXProcess.java:86)

"Worker-13" prio=5 tid=0000000013aa7400 nid=0xb14e3000 in Object.wait() [00000000b14e2000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <00000000181e92c8> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <00000000181e92c8> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)

"Worker-12" prio=5 tid=0000000013308000 nid=0xb17e9000 in Object.wait() [00000000b17e8000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <00000000181e92c8> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <00000000181e92c8> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)

"Worker-9" prio=5 tid=0000000013500400 nid=0xb280d000 in Object.wait() [00000000b280c000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <000000001683b720> (a org.eclipse.ui.console.IOConsoleInputStream)
    at java.lang.Object.wait(Object.java:485)
    at org.eclipse.ui.console.IOConsoleInputStream.waitForData(IOConsoleInputStream.java:147)
    at org.eclipse.ui.console.IOConsoleInputStream.read(IOConsoleInputStream.java:92)
    - locked <000000001683b720> (a org.eclipse.ui.console.IOConsoleInputStream)
    at org.eclipse.ui.console.IOConsoleInputStream.read(IOConsoleInputStream.java:117)
    at org.eclipse.debug.internal.ui.views.console.ProcessConsole$InputReadJob.run(ProcessConsole.java:678)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

"com.google.inject.internal.util.$Finalizer" daemon prio=5 tid=0000000013290000 nid=0xb2483000 in Object.wait() [00000000b2482000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <000000001a0e4048> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
    - locked <000000001a0e4048> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
    at com.google.inject.internal.util.$Finalizer.run(Finalizer.java:144)
    at java.lang.Thread.run(Thread.java:680)

"[ThreadPool Manager] - Idle Thread" daemon prio=5 tid=0000000013b17c00 nid=0xb21fd000 in Object.wait() [00000000b21fc000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <00000000184f21e0> (a org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor)
    at java.lang.Object.wait(Object.java:485)
    at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:106)
    - locked <00000000184f21e0> (a org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor)

"Device List Monitor" prio=5 tid=000000001348bc00 nid=0xb22ff000 runnable [00000000b22fe000]
   java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.FileDispatcher.read0(Native Method)
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:198)
    at sun.nio.ch.IOUtil.read(IOUtil.java:171)
    at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:245)
    - locked <0000000019a40208> (a java.lang.Object)
    at com.android.ddmlib.DeviceMonitor.read(DeviceMonitor.java:949)
    at com.android.ddmlib.DeviceMonitor.readLength(DeviceMonitor.java:922)
    at com.android.ddmlib.DeviceMonitor.deviceMonitorLoop(DeviceMonitor.java:187)
    at com.android.ddmlib.DeviceMonitor.access$000(DeviceMonitor.java:42)
    at com.android.ddmlib.DeviceMonitor$1.run(DeviceMonitor.java:82)

"Monitor" prio=5 tid=0000000013b0d400 nid=0xb20fb000 runnable [00000000b20fa000]
   java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)
    at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:136)
    at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:69)
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
    - locked <000000001878b288> (a sun.nio.ch.Util$2)
    - locked <000000001878b298> (a java.util.Collections$UnmodifiableSet)
    - locked <0000000018716178> (a sun.nio.ch.KQueueSelectorImpl)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:84)
    at com.android.ddmlib.MonitorThread.run(MonitorThread.java:240)

"Worker-6" prio=5 tid=00000000132b1000 nid=0xb1ff9000 waiting on condition [00000000b1ff8000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <00000000196c6658> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
    at org.eclipse.epp.usagedata.internal.gathering.services.UsageDataService.getQueuedEvent(UsageDataService.java:222)
    at org.eclipse.epp.usagedata.internal.gathering.services.UsageDataService.access$0(UsageDataService.java:220)
    at org.eclipse.epp.usagedata.internal.gathering.services.UsageDataService$1.run(UsageDataService.java:155)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

"Bundle File Closer" daemon prio=1 tid=00000000132a1000 nid=0xb1bf1000 in Object.wait() [00000000b1bf0000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <00000000192aa968> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
    at java.lang.Object.wait(Object.java:485)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
    - locked <00000000192aa968> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=1 tid=0000000013835800 nid=0xb1aef000 in Object.wait() [00000000b1aee000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0000000018e32a00> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)
    at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:179)
    - locked <0000000018e32a00> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

"Java indexing" daemon prio=4 tid=0000000013919400 nid=0xb19ed000 in Object.wait() [00000000b19ec000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0000000018bc42a0> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager)
    at java.lang.Object.wait(Object.java:485)
    at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:382)
    - locked <0000000018bc42a0> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager)
    at java.lang.Thread.run(Thread.java:680)

"Worker-JM" prio=5 tid=00000000131b4800 nid=0xb16e7000 in Object.wait() [00000000b16e6000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <000000001804c5b0> (a java.util.ArrayList)
    at org.eclipse.core.internal.jobs.InternalWorker.run(InternalWorker.java:58)
    - locked <000000001804c5b0> (a java.util.ArrayList)

"[Timer] - Main Queue Handler" daemon prio=5 tid=000000001317c400 nid=0xb15e5000 in Object.wait() [00000000b15e4000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <000000001818fbf8> (a java.lang.Object)
    at org.eclipse.equinox.internal.util.impl.tpt.timer.TimerImpl.run(TimerImpl.java:141)
    - locked <000000001818fbf8> (a java.lang.Object)
    at java.lang.Thread.run(Thread.java:680)

"Framework Event Dispatcher" daemon prio=5 tid=0000000013126000 nid=0xb13e1000 in Object.wait() [00000000b13e0000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0000000018071d40> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
    at java.lang.Object.wait(Object.java:485)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
    - locked <0000000018071d40> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

"Start Level Event Dispatcher" daemon prio=5 tid=0000000013123c00 nid=0xb12df000 in Object.wait() [00000000b12de000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0000000018071bd8> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
    at java.lang.Object.wait(Object.java:485)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
    - locked <0000000018071bd8> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

"State Data Manager" daemon prio=5 tid=0000000013122400 nid=0xb1101000 waiting on condition [00000000b1100000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at org.eclipse.osgi.internal.baseadaptor.StateManager.run(StateManager.java:297)
    at java.lang.Thread.run(Thread.java:680)

"Framework Active Thread" prio=5 tid=000000001311d000 nid=0xb0faa000 in Object.wait() [00000000b0fa9000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <00000000180210b0> (a org.eclipse.osgi.framework.internal.core.Framework)
    at org.eclipse.osgi.framework.internal.core.Framework.run(Framework.java:1817)
    - locked <00000000180210b0> (a org.eclipse.osgi.framework.internal.core.Framework)
    at java.lang.Thread.run(Thread.java:680)

"Poller SunPKCS11-Darwin" daemon prio=1 tid=0000000013861800 nid=0xb0e1d000 waiting on condition [00000000b0e1c000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at sun.security.pkcs11.SunPKCS11$TokenPoller.run(SunPKCS11.java:692)
    at java.lang.Thread.run(Thread.java:680)

"Low Memory Detector" daemon prio=5 tid=00000000130bdc00 nid=0xb0c19000 runnable [0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C1 CompilerThread0" daemon prio=9 tid=00000000130bcc00 nid=0xb0b17000 waiting on condition [0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=9 tid=00000000130bbc00 nid=0xb0a15000 runnable [0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Surrogate Locker Thread (Concurrent GC)" daemon prio=5 tid=00000000130bac00 nid=0xb0913000 waiting on condition [0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=8 tid=00000000130ae800 nid=0xb0811000 in Object.wait() [00000000b0810000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0000000018020fd0> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
    - locked <0000000018020fd0> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
    at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=00000000130ad800 nid=0xb070f000 in Object.wait() [00000000b070e000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0000000018020fe0> (a java.lang.ref.Reference$Lock)
    at java.lang.Object.wait(Object.java:485)
    at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
    - locked <0000000018020fe0> (a java.lang.ref.Reference$Lock)

"main" prio=6 tid=0000000013000c00 nid=0xa0c44540 runnable [00000000bfffe000]
   java.lang.Thread.State: RUNNABLE
    at org.eclipse.swt.internal.cocoa.OS.objc_msgSend_bool(Native Method)
    at org.eclipse.swt.internal.cocoa.NSRunLoop.runMode(NSRunLoop.java:42)
    at org.eclipse.swt.widgets.Display.sleep(Display.java:4573)
    at org.eclipse.ui.application.WorkbenchAdvisor.eventLoopIdle(WorkbenchAdvisor.java:364)
    at org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor.eventLoopIdle(IDEWorkbenchAdvisor.java:917)
    at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2697)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
    at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
    at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    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 org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1410)

"VM Thread" prio=9 tid=0000000013803c00 nid=0xb060d000 runnable 

"Gang worker#0 (Parallel GC Threads)" prio=9 tid=0000000013002800 nid=0xb0307000 runnable 

"Gang worker#1 (Parallel GC Threads)" prio=9 tid=0000000013003800 nid=0xb0409000 runnable 

"Concurrent Mark-Sweep GC Thread" prio=9 tid=000000001306e400 nid=0xb050b000 runnable 
"VM Periodic Task Thread" prio=10 tid=00000000130c7400 nid=0xb0d1b000 waiting on condition 

"Exception Catcher Thread" prio=10 tid=0000000013000800 nid=0xb0205000 runnable 
JNI global references: 1896

@sarxos
Copy link
Owner

sarxos commented Jan 28, 2013

Hi,

This is dump of the running Eclipse, not the program where Webcam Capture is used. Minimal output from ps -ef | grep -i java should contain list of 3 processes. One for Eclipse, one for your program and one for grep. Of course there can be more ones. Please make sure to use correct PID.

You can also perform some fine tuning and execute the following command to list only those Java processes which include webcam-capture binary:

$ ps -ef | grep -i java | grep -i webcam

@alanheppenstall
Copy link
Author

Sorry, that was pretty stupid of me! This should be the right one:

2013-01-28 22:37:45
Full thread dump Java HotSpot(TM) Client VM (20.12-b01-434 mixed mode):

"Worker-17" prio=5 tid=0000000013416400 nid=0xb2b13000 in Object.wait() [00000000b2b12000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
- locked <00000000181e92c8> (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)

"Process monitor" daemon prio=5 tid=0000000013826000 nid=0xb270b000 in Object.wait() [00000000b270a000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at java.lang.UNIXProcess.waitFor(UNIXProcess.java:115)
- locked <00000000162416c8> (a java.lang.UNIXProcess)
at org.eclipse.debug.core.model.RuntimeProcess$ProcessMonitorThread.run(RuntimeProcess.java:417)

"Input Stream Monitor" daemon prio=5 tid=00000000134f3400 nid=0xb2585000 in Object.wait() [00000000b2584000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at org.eclipse.debug.internal.core.InputStreamMonitor.writeNext(InputStreamMonitor.java:154)
- locked <00000000162618d0> (a java.lang.Object)
at org.eclipse.debug.internal.core.InputStreamMonitor.write(InputStreamMonitor.java:124)
at org.eclipse.debug.internal.core.InputStreamMonitor$1.run(InputStreamMonitor.java:99)
at java.lang.Thread.run(Thread.java:680)

"Output Stream Monitor" daemon prio=1 tid=00000000134f2c00 nid=0xb1ef7000 runnable [00000000b1ef6000]
java.lang.Thread.State: RUNNABLE
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:220)
at java.lang.UNIXProcess$DeferredCloseInputStream.read(UNIXProcess.java:227)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
- locked <000000001625f7f0> (a java.io.BufferedInputStream)
at java.io.FilterInputStream.read(FilterInputStream.java:90)
at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:144)
at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134)
at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207)
at java.lang.Thread.run(Thread.java:680)

"Output Stream Monitor" daemon prio=1 tid=00000000134f2400 nid=0xb1df5000 runnable [00000000b1df4000]
java.lang.Thread.State: RUNNABLE
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:220)
at java.lang.UNIXProcess$DeferredCloseInputStream.read(UNIXProcess.java:227)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
- locked <0000000016243c80> (a java.io.BufferedInputStream)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
- locked <000000001625d748> (a java.io.BufferedInputStream)
at java.io.FilterInputStream.read(FilterInputStream.java:90)
at org.eclipse.debug.internal.core.OutputStreamMonitor.read(OutputStreamMonitor.java:144)
at org.eclipse.debug.internal.core.OutputStreamMonitor.access$1(OutputStreamMonitor.java:134)
at org.eclipse.debug.internal.core.OutputStreamMonitor$1.run(OutputStreamMonitor.java:207)
at java.lang.Thread.run(Thread.java:680)

"process reaper" daemon prio=5 tid=00000000134f1c00 nid=0xb1cf3000 runnable [00000000b1cf2000]
java.lang.Thread.State: RUNNABLE
at java.lang.UNIXProcess.waitForProcessExit(Native Method)
at java.lang.UNIXProcess.access$900(UNIXProcess.java:17)
at java.lang.UNIXProcess$2$1.run(UNIXProcess.java:86)

"Worker-16" prio=5 tid=000000001342e000 nid=0xb290f000 in Object.wait() [00000000b290e000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at org.eclipse.ui.console.IOConsoleInputStream.waitForData(IOConsoleInputStream.java:147)
at org.eclipse.ui.console.IOConsoleInputStream.read(IOConsoleInputStream.java:92)
- locked <0000000016262b58> (a org.eclipse.ui.console.IOConsoleInputStream)
at org.eclipse.ui.console.IOConsoleInputStream.read(IOConsoleInputStream.java:117)
at org.eclipse.debug.internal.ui.views.console.ProcessConsole$InputReadJob.run(ProcessConsole.java:678)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

"Attach Listener" daemon prio=9 tid=000000001348e800 nid=0xb2a11000 waiting on condition [0000000000000000]
java.lang.Thread.State: RUNNABLE

"Worker-13" prio=5 tid=0000000013aa7400 nid=0xb14e3000 in Object.wait() [00000000b14e2000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
- locked <00000000181e92c8> (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)

"Worker-12" prio=5 tid=0000000013308000 nid=0xb17e9000 in Object.wait() [00000000b17e8000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
- locked <00000000181e92c8> (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)

"Worker-9" prio=5 tid=0000000013500400 nid=0xb280d000 in Object.wait() [00000000b280c000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
- locked <00000000181e92c8> (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)

"com.google.inject.internal.util.$Finalizer" daemon prio=5 tid=0000000013290000 nid=0xb2483000 in Object.wait() [00000000b2482000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <000000001a0e4048> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
- locked <000000001a0e4048> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
at com.google.inject.internal.util.$Finalizer.run(Finalizer.java:144)
at java.lang.Thread.run(Thread.java:680)

"[ThreadPool Manager] - Idle Thread" daemon prio=5 tid=0000000013b17c00 nid=0xb21fd000 in Object.wait() [00000000b21fc000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:106)
- locked <00000000184f21e0> (a org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor)

"Device List Monitor" prio=5 tid=000000001348bc00 nid=0xb22ff000 runnable [00000000b22fe000]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.FileDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:198)
at sun.nio.ch.IOUtil.read(IOUtil.java:171)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:245)
- locked <0000000019a40208> (a java.lang.Object)
at com.android.ddmlib.DeviceMonitor.read(DeviceMonitor.java:949)
at com.android.ddmlib.DeviceMonitor.readLength(DeviceMonitor.java:922)
at com.android.ddmlib.DeviceMonitor.deviceMonitorLoop(DeviceMonitor.java:187)
at com.android.ddmlib.DeviceMonitor.access$000(DeviceMonitor.java:42)
at com.android.ddmlib.DeviceMonitor$1.run(DeviceMonitor.java:82)

"Monitor" prio=5 tid=0000000013b0d400 nid=0xb20fb000 runnable [00000000b20fa000]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)
at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:136)
at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:69)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
- locked <000000001878b288> (a sun.nio.ch.Util$2)
- locked <000000001878b298> (a java.util.Collections$UnmodifiableSet)
- locked <0000000018716178> (a sun.nio.ch.KQueueSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:84)
at com.android.ddmlib.MonitorThread.run(MonitorThread.java:240)

"Worker-6" prio=5 tid=00000000132b1000 nid=0xb1ff9000 waiting on condition [00000000b1ff8000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <00000000196c6658> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
at org.eclipse.epp.usagedata.internal.gathering.services.UsageDataService.getQueuedEvent(UsageDataService.java:222)
at org.eclipse.epp.usagedata.internal.gathering.services.UsageDataService.access$0(UsageDataService.java:220)
at org.eclipse.epp.usagedata.internal.gathering.services.UsageDataService$1.run(UsageDataService.java:155)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

"Bundle File Closer" daemon prio=1 tid=00000000132a1000 nid=0xb1bf1000 in Object.wait() [00000000b1bf0000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <00000000192aa968> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at java.lang.Object.wait(Object.java:485)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
- locked <00000000192aa968> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=1 tid=0000000013835800 nid=0xb1aef000 in Object.wait() [00000000b1aee000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:179)
- locked <0000000018e32a00> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

"Java indexing" daemon prio=4 tid=0000000013919400 nid=0xb19ed000 in Object.wait() [00000000b19ec000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0000000018bc42a0> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager)
at java.lang.Object.wait(Object.java:485)
at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:382)
- locked <0000000018bc42a0> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager)
at java.lang.Thread.run(Thread.java:680)

"Worker-JM" prio=5 tid=00000000131b4800 nid=0xb16e7000 in Object.wait() [00000000b16e6000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <000000001804c5b0> (a java.util.ArrayList)
at org.eclipse.core.internal.jobs.InternalWorker.run(InternalWorker.java:58)
- locked <000000001804c5b0> (a java.util.ArrayList)

"[Timer] - Main Queue Handler" daemon prio=5 tid=000000001317c400 nid=0xb15e5000 in Object.wait() [00000000b15e4000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.eclipse.equinox.internal.util.impl.tpt.timer.TimerImpl.run(TimerImpl.java:141)
- locked <000000001818fbf8> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:680)

"Framework Event Dispatcher" daemon prio=5 tid=0000000013126000 nid=0xb13e1000 in Object.wait() [00000000b13e0000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0000000018071d40> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at java.lang.Object.wait(Object.java:485)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
- locked <0000000018071d40> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

"Start Level Event Dispatcher" daemon prio=5 tid=0000000013123c00 nid=0xb12df000 in Object.wait() [00000000b12de000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0000000018071bd8> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at java.lang.Object.wait(Object.java:485)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
- locked <0000000018071bd8> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

"State Data Manager" daemon prio=5 tid=0000000013122400 nid=0xb1101000 waiting on condition [00000000b1100000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at org.eclipse.osgi.internal.baseadaptor.StateManager.run(StateManager.java:297)
at java.lang.Thread.run(Thread.java:680)

"Framework Active Thread" prio=5 tid=000000001311d000 nid=0xb0faa000 in Object.wait() [00000000b0fa9000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.eclipse.osgi.framework.internal.core.Framework.run(Framework.java:1817)
- locked <00000000180210b0> (a org.eclipse.osgi.framework.internal.core.Framework)
at java.lang.Thread.run(Thread.java:680)

"Poller SunPKCS11-Darwin" daemon prio=1 tid=0000000013861800 nid=0xb0e1d000 waiting on condition [00000000b0e1c000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at sun.security.pkcs11.SunPKCS11$TokenPoller.run(SunPKCS11.java:692)
at java.lang.Thread.run(Thread.java:680)

"Low Memory Detector" daemon prio=5 tid=00000000130bdc00 nid=0xb0c19000 runnable [0000000000000000]
java.lang.Thread.State: RUNNABLE

"C1 CompilerThread0" daemon prio=9 tid=00000000130bcc00 nid=0xb0b17000 waiting on condition [0000000000000000]
java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=9 tid=00000000130bbc00 nid=0xb0a15000 runnable [0000000000000000]
java.lang.Thread.State: RUNNABLE

"Surrogate Locker Thread (Concurrent GC)" daemon prio=5 tid=00000000130bac00 nid=0xb0913000 waiting on condition [0000000000000000]
java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=8 tid=00000000130ae800 nid=0xb0811000 in Object.wait() [00000000b0810000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0000000018020fd0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
- locked <0000000018020fd0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=00000000130ad800 nid=0xb070f000 in Object.wait() [00000000b070e000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0000000018020fe0> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:485)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
- locked <0000000018020fe0> (a java.lang.ref.Reference$Lock)

"main" prio=6 tid=0000000013000c00 nid=0xa0c44540 runnable [00000000bfffe000]
java.lang.Thread.State: RUNNABLE
at org.eclipse.swt.internal.cocoa.OS.objc_msgSend_bool(Native Method)
at org.eclipse.swt.internal.cocoa.NSRunLoop.runMode(NSRunLoop.java:42)
at org.eclipse.swt.widgets.Display.sleep(Display.java:4573)
at org.eclipse.ui.application.WorkbenchAdvisor.eventLoopIdle(WorkbenchAdvisor.java:364)
at org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor.eventLoopIdle(IDEWorkbenchAdvisor.java:917)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2697)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
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 org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)

"VM Thread" prio=9 tid=0000000013803c00 nid=0xb060d000 runnable

"Gang worker#0 (Parallel GC Threads)" prio=9 tid=0000000013002800 nid=0xb0307000 runnable

"Gang worker#1 (Parallel GC Threads)" prio=9 tid=0000000013003800 nid=0xb0409000 runnable

"Concurrent Mark-Sweep GC Thread" prio=9 tid=000000001306e400 nid=0xb050b000 runnable
"VM Periodic Task Thread" prio=10 tid=00000000130c7400 nid=0xb0d1b000 waiting on condition

"Exception Catcher Thread" prio=10 tid=0000000013000800 nid=0xb0205000 runnable
JNI global references: 2270

@sarxos
Copy link
Owner

sarxos commented Jan 28, 2013

Hi, it's not the right one again ;P

Please take a look on the stack traces in the threads. None of Webcam Capture classes is available there, but plenty of those from Equinox (OSGi runtime on which Eclipse is running).

There is also a possibility that your program is not running when you are executing jstack. It will mean that it has been terminated (you should notice "stop" button greyed out in Eclipse). If this is the case the please locate hs_err_pid* file in program working directory. JVM generates it after each crash.

I will come back to this issue tomorrow since today it's too late for me and my gf is complaining because I'm sitting at the computer from the early morning ;P

@alanheppenstall
Copy link
Author

Sorry, I've now worked out the issue with log4j and should be able to see a useful stack trace.

Console output:

[AWT-EventQueue-0] INFO com.github.sarxos.webcam.WebcamDriverUtils - Searching driver com.github.sarxos.webcam.ds.openimaj.OpenImajDriver
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.WebcamDriverUtils - Searching driver com.github.sarxos.webcam.ds.civil.LtiCivilDriver
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.WebcamDriverUtils - Searching driver com.github.sarxos.webcam.ds.jmf.JmfDriver
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.Webcam - Webcam driver has not been found, default one will be used!
Not enough args for null OpenIMAJGrabber.startSession(int, int, double)
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.Webcam - Opening webcam Built-in iSight 0x2460000005ac8507

I can't seem to get anything from jstack. The process is still running (red stop button in eclipse) and the webcam capture UI is stuck on 'Initialization'. Using the grep to look at any java processes only throws up two processes, neither of which are the WebcamCapture process. How odd.

Thanks for all the time you're putting in, it's much appreciated and I'm sorry to cause you more work!

@sarxos
Copy link
Owner

sarxos commented Jan 30, 2013

Hi,

Sorry to be late. I was pretty busy and was not able to check this issue.

I prepared small program to verify one option. Could you please run it on your Mac?

You have to download all required JARs compressed in single ZIP file from here and add them to the classpath when running test program.

Code to be tested:

This should capture single image and store it in test.jpg in working directory (use F5 to refresh project in your Eclipse workspace for file to appear after you run this program).

import java.awt.image.BufferedImage;
import java.io.File;
import java.util.List;

import javax.imageio.ImageIO;

import org.openimaj.image.ImageUtilities;
import org.openimaj.video.capture.Device;
import org.openimaj.video.capture.VideoCapture;


public class Test1 {

    public static void main(String[] args) throws Throwable {

        List<Device> devices = VideoCapture.getVideoDevices();
        System.out.println(String.format("Found %d devices", devices.size()));

        for (Device device : devices) {

            System.out.println(String.format("Create video capture for device %s %s", device.getNameStr(), device.getIdentifierStr()));
            VideoCapture capture = new VideoCapture(320, 240, device);

            System.out.println("Create buffer");
            int i = 0;
            do {
                capture.getNextFrame();
                System.out.println("wait...");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                }
            } while (++i < 3);

            System.out.println("Get image");
            BufferedImage img = ImageUtilities.createBufferedImageForDisplay(capture.getCurrentFrame());

            System.out.println("Stop capture");
            capture.stopCapture();

            System.out.println("Close");
            capture.close();

            System.out.println("Store image in test1.jpg");
            ImageIO.write(img, "JPG", new File("test1.jpg"));
        }
    }
}

If this piece works fine and you can check captured image, it means that the problem is located in Webcam Capture API. Otherwise, if program fails, the problem is located in native code from OpenIMAJ project (I'm using their binaries in Webcam Capture default driver).

@alanheppenstall
Copy link
Author

Hi, sorry it took me a while to respond, I've had a hectic day too. I ran the test program using the libs provided and that gives me an image that looks normal. Here is the console output:

Not enough args for null OpenIMAJGrabber.startSession(int, int, double)
Found 1 devices
Create video capture for device Built-in iSight 0x2460000005ac8507
Create buffer
wait...
wait...
wait...
Get image
Stop capture
Close
Store image in test1.jpg

What else can I do to help?

@sarxos
Copy link
Owner

sarxos commented Jan 31, 2013

Ok, I think I implement locks in too clever way ;P

Let me prepare webcam-capture private release with more logs, especially on fragments I suppose doesn't work, so you can test it with your solution and provide more accurate logs.

@ghost ghost assigned sarxos Jan 31, 2013
sarxos added a commit that referenced this issue Feb 3, 2013
@sarxos
Copy link
Owner

sarxos commented Feb 3, 2013

Hi @alanheppenstall,

Sorry for getting back to your issue so late. I was pretty busy with project at work.

Today I redesigned some of the synchronization features existing in the webcam-capture code with hope it will fix your problem. The code is already available as 0.3.8-beta2. It will not be available in Maven Central, but you can download both JAR and ZIP from here.

@alanheppenstall
Copy link
Author

Hi @sarxos,

No worries, thank you for getting back to me.

I've just tried the jars you provided in 0.3.8-beta2 and seem to get a similar issue:

Console:

[AWT-EventQueue-0] INFO com.github.sarxos.webcam.WebcamDriverUtils - Searching driver com.github.sarxos.webcam.ds.openimaj.OpenImajDriver
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.WebcamDriverUtils - Searching driver com.github.sarxos.webcam.ds.civil.LtiCivilDriver
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.WebcamDriverUtils - Searching driver com.github.sarxos.webcam.ds.jmf.JmfDriver
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.Webcam - Webcam driver has not been found, default one will be used!
Not enough args for null OpenIMAJGrabber.startSession(int, int, double)
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.Webcam - Opening webcam Built-in iSight 0x2460000005ac8507

I tried jstack but seem to be getting an issue with that:

localhost:~ alanheppenstall$ jstack 21987 > stack6.log
21987: Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding
localhost:~ alanheppenstall$ jstack 21987 > stack6.log -F
Attaching to core -F from executable 21987, please wait...
Error attaching to core file: Core files not yet supported on Mac OS X
localhost:~ alanheppenstall$

Jstack normally works so I'm guessing this must be something with the build?

@sarxos
Copy link
Owner

sarxos commented Feb 4, 2013

OK, I've included additional logs in the code to check what is happening inside. Please use this version and provide output.

@alanheppenstall
Copy link
Author

Hmmmm, maybe it is now taking images. I've been using the WebcamViewerExample. The console output is:

[AWT-EventQueue-0] INFO com.github.sarxos.webcam.WebcamDriverUtils - Searching driver com.github.sarxos.webcam.ds.openimaj.OpenImajDriver
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.WebcamDriverUtils - Searching driver com.github.sarxos.webcam.ds.civil.LtiCivilDriver
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.WebcamDriverUtils - Searching driver com.github.sarxos.webcam.ds.jmf.JmfDriver
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.Webcam - Webcam driver has not been found, default one will be used!
Not enough args for null OpenIMAJGrabber.startSession(int, int, double)
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.Webcam - Opening webcam Built-in iSight 0x2460000005ac8507
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.Webcam - Ensure size
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.Webcam - Device open call
Device get size
Size null, get all sizes
Sizes: 6
Set size [0]: java.awt.Dimension[width=176,height=144]
AWT-EventQueue-0: opening device
AWT-EventQueue-0: Session task, start
AWT-EventQueue-0: StartSessionTask call process
processor-1: StartSessionTask grabber.startSession(..)
processor-1: StartSessionTask grabber.startSession(..) finished
AWT-EventQueue-0: StartSessionTask call processed
AWT-EventQueue-0: Session started: true
AWT-EventQueue-0: get size task
AWT-EventQueue-0: get size task, simension: java.awt.Dimension[width=176,height=144]
AWT-EventQueue-0: next frame
AWT-EventQueue-0: get image
AWT-EventQueue-0: get image finished
AWT-EventQueue-0: sleep 1000 ms
AWT-EventQueue-0: end sleep
AWT-EventQueue-0: next frame
AWT-EventQueue-0: get image
...

@sarxos
Copy link
Owner

sarxos commented Feb 4, 2013

Mmmm... It seams like several println calls accidentaly synchronized the code ;P Let me try something else - I completely removed synchronization from WebcamDevice and implemented it in Webcam class instead - can you please try this one? I replaced previous file which was available there.

@alanheppenstall
Copy link
Author

Brilliant! Always makes me wonder how much a lot of println statements can take out of a system. Seems to hang on the initialization again. Console output:

[AWT-EventQueue-0] INFO com.github.sarxos.webcam.WebcamDriverUtils - Searching driver com.github.sarxos.webcam.ds.openimaj.OpenImajDriver
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.WebcamDriverUtils - Searching driver com.github.sarxos.webcam.ds.civil.LtiCivilDriver
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.WebcamDriverUtils - Searching driver com.github.sarxos.webcam.ds.jmf.JmfDriver
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.Webcam - Webcam driver has not been found, default one will be used!
Not enough args for null OpenIMAJGrabber.startSession(int, int, double)
[AWT-EventQueue-0] INFO com.github.sarxos.webcam.Webcam - Opening webcam Built-in iSight 0x2460000005ac8507

@sarxos
Copy link
Owner

sarxos commented Feb 4, 2013

Would it be possible for you to checkout the code and try to debug where thread has stopped? To do that you would have to:

  1. Run program as Debug,
  2. Switch to Debug perspective,
  3. Pause program,
  4. Check stack traces of paused threads (left top view in Debug perspective).

If you agree to dive in the code, then I will submit it to Github, since now it is available only on my Ubuntu laptop.

Maybe trace logs revel some secrets, but I'm afraid it will just re-sync code again, as it was observed in previous example... However, to enable trace logs you would have to put this logback.xml file in the program working directory:

<configuration scan="true" scanPeriod="30 seconds">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
        </layout>
    </appender>
    <root level="trace">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

And calling this one from the code (at the very beginning of main() method:

WebcamLogConfigurator.configure("logback.xml");

Please make sure to add logback-classic and logback-core JARs in the classpath.

@sarxos sarxos closed this as completed in c5955bf Feb 5, 2013
@sarxos
Copy link
Owner

sarxos commented Feb 6, 2013

Hi,

I recently replaced most of the blocking mechanisms to the non-blocking ones. Could you please test it? It should fix your issue. The JAR is available here. If there will be no issues with this version I will release it as 0.3.8.

Thank you!

@alanheppenstall
Copy link
Author

Hi @sarxos

Yep, I seem to be able to run the examples without issues now.

Thank you so much for all your help!

Is there a donate button anywhere? :)

@sarxos
Copy link
Owner

sarxos commented Feb 6, 2013

Hi.

I'm really happy I was able to help you resolve this problem :) I do not have a possibility to perform sanity tests on all supported platforms (such as Mac OS or Raspberry Pi), so I really appreciate time you spent to debug and diagnose this issue :)

Yes, there is a donate button available here.

Thank you!

@alanheppenstall
Copy link
Author

It's not much but I just wanted to show my appreciation.

Thanks for your help!

Alan

@sarxos
Copy link
Owner

sarxos commented Feb 9, 2013

Thank you Alan, I really appreciate this :)

@hwathanh
Copy link

I used sarxos lib to capture USB webcam successfully but not to my wireless IP cam. I own DCS-2120 IP cam. Could i use sarxos lib to connect to my IP cam via VPN and how to implement. Waiting for your reply. Thanks!

@sarxos
Copy link
Owner

sarxos commented Jan 29, 2015

@hwathanh, it's great you are using this library, but please open new ticket next time because this issue is in regards to issues on Mac and not about IP cameras. I moved your question to #301.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants