sarxos / webcam-capture

The goal of this project is to allow integrated or USB-connected webcams to be accessed directly from Java. Using provided libraries users are able to read camera images and detect motion. Main project consist of several sub projects - the root one, which contains required classes, build-in webcam driver compatible with Windows, Linux and Mac OS, which can stream images as fast as your camera can serve them (up to 50 FPS). Main project can be used standalone, but user is able to replace build-in driver with different one - such as OpenIMAJ, GStreamer, V4L4j, JMF, LTI-CIVIL, FMJ, etc.
http://webcam-capture.sarxos.pl
MIT License
2.27k stars 1.11k forks source link

DemanglingException: Parsing error at position 2: Expected char 'Z', found 'b' #132

Open sarxos opened 11 years ago

sarxos commented 11 years ago

@steph33560 wrote:


Hi :)

I've got a strange issue there ; the logs : http://pastebin.com/5krJJbeX I've got a java.io.EOFException at the end, and there's something strange on lines like 67 ... don't know what it is :-/

$ ldd ~/Bureau/OpenIMAJGrabber.so 
    linux-vdso.so.1 =>  (0x00007fff6f5ff000)
    libv4l2.so.0 => /usr/lib/x86_64-linux-gnu/libv4l2.so.0 (0x00007fb55d03f000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb55cd3f000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb55cb28000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb55c769000)
    libv4lconvert.so.0 => /usr/lib/x86_64-linux-gnu/libv4lconvert.so.0 (0x00007fb55c4f4000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb55c2d6000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb55bfda000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fb55d474000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb55bdd2000)
    libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007fb55bb81000)

may you help me ?

Thanks :)

org.bridj.demangling.Demangler$DemanglingException: Parsing error at position 2: Expected char 'Z', found 'b'
        __bss_start
          ^ (in symbol '__bss_start')
        at org.bridj.demangling.Demangler.error(Demangler.java:249)
        at org.bridj.demangling.Demangler.error(Demangler.java:241)
        at org.bridj.demangling.Demangler.expectChars(Demangler.java:169)
        at org.bridj.demangling.GCC4Demangler.parseSymbol(GCC4Demangler.java:385)
        at org.bridj.NativeLibrary.parseSymbol(NativeLibrary.java:402)
        at org.bridj.demangling.Demangler$Symbol.parse(Demangler.java:355)
        at org.bridj.demangling.Demangler$Symbol.getParsedRef(Demangler.java:349)
        at org.bridj.NativeLibrary.scanSymbols(NativeLibrary.java:384)
        at org.bridj.NativeLibrary.getSymbol(NativeLibrary.java:291)
        at org.bridj.NativeLibrary.getSymbol(NativeLibrary.java:221)
        at org.bridj.cpp.CPPRuntime.registerNativeMethod(CPPRuntime.java:336)
        at org.bridj.CRuntime.register(CRuntime.java:411)
        at org.bridj.CRuntime.register(CRuntime.java:315)
        at org.bridj.BridJ.register(BridJ.java:339)
        at org.bridj.BridJ.register(BridJ.java:193)
        at com.github.sarxos.webcam.ds.buildin.natives.OpenIMAJGrabber.<clinit>(OpenIMAJGrabber.java:60)
        at com.github.sarxos.webcam.ds.buildin.WebcamDefaultDriver$WebcamNewGrabberTask.handle(WebcamDefaultDriver.java:56)
        at com.github.sarxos.webcam.WebcamProcessor$AtomicProcessor.run(WebcamProcessor.java:66)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:724)
sarxos commented 11 years ago

The first issue - that is, some unknown stack traces from BridJ demangler, are very strange. I would like to open new issue against this problem in nativelibs4java project from where BridJ comes from. I will add you into the discussion since there can be some additional info required. But before I do that I would like to ask you about some more details:

org.bridj.demangling.Demangler$DemanglingException: Parsing error at position 2: Expected char 'Z', found 'b'
        __bss_start
          ^ (in symbol '__bss_start')
        at org.bridj.demangling.Demangler.error(Demangler.java:249)
        at org.bridj.demangling.Demangler.error(Demangler.java:241)
        at org.bridj.demangling.Demangler.expectChars(Demangler.java:169)
        at org.bridj.demangling.GCC4Demangler.parseSymbol(GCC4Demangler.java:385)
        at org.bridj.NativeLibrary.parseSymbol(NativeLibrary.java:402)
        at org.bridj.demangling.Demangler$Symbol.parse(Demangler.java:355)
        at org.bridj.demangling.Demangler$Symbol.getParsedRef(Demangler.java:349)
        at org.bridj.NativeLibrary.scanSymbols(NativeLibrary.java:384)
        at org.bridj.NativeLibrary.getSymbol(NativeLibrary.java:291)
        at org.bridj.NativeLibrary.getSymbol(NativeLibrary.java:221)
        at org.bridj.cpp.CPPRuntime.registerNativeMethod(CPPRuntime.java:336)
        at org.bridj.CRuntime.register(CRuntime.java:411)
        at org.bridj.CRuntime.register(CRuntime.java:315)
        at org.bridj.BridJ.register(BridJ.java:339)
        at org.bridj.BridJ.register(BridJ.java:193)
        at com.github.sarxos.webcam.ds.buildin.natives.OpenIMAJGrabber.<clinit>(OpenIMAJGrabber.java:60)
        at com.github.sarxos.webcam.ds.buildin.WebcamDefaultDriver$WebcamNewGrabberTask.handle(WebcamDefaultDriver.java:56)
        at com.github.sarxos.webcam.WebcamProcessor$AtomicProcessor.run(WebcamProcessor.java:66)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:724)
sarxos commented 11 years ago

One more thought, can you please try running the same example with the newest BridJ SNAPSHOT JAR? You can find it here:

https://oss.sonatype.org/content/repositories/snapshots/com/nativelibs4java/bridj/0.7-SNAPSHOT/bridj-0.7-20130729.234518-45.jar

stef33560 commented 11 years ago

Hi ! Thanks for reactivity :)

What is the operating system you are using (yeah, I know it's Linux, but which one)?

I'm running Ubuntu 12.04.2 LTS and Linux Mint 13 Maya

What is the Java version used - is it Oracle JDK, OpenJDK, and is it 32- or 64-bit?

It's java version 1.7.0_25 build 1.7.0_25-b15 (java-7-oracle)

Did you compile the example and run it via launch4j, or with classic approach via java command?

I'm running the example with Eclipse Juno Build id: 20120614-1722 ...

One more thought, can you please try running the same example with the newest BridJ SNAPSHOT JAR?

Same problem :(

INFO: DEBUG(BridJ): library="/tmp/BridJExtractedLibraries6646113242754245442/OpenIMAJGrabber.so", symbol="ioctl", address=7f3627f94530, demangled="null ioctl()"
org.bridj.demangling.Demangler$DemanglingException: Parsing error at position 1: Expected char 'Z', found 'f' 
    _fini
     ^ (in symbol '_fini')
    at org.bridj.demangling.Demangler.error(Demangler.java:276)
    at org.bridj.demangling.Demangler.error(Demangler.java:266)
    at org.bridj.demangling.Demangler.expectChars(Demangler.java:178)
    at org.bridj.demangling.GCC4Demangler.parseSymbol(GCC4Demangler.java:389)
    at org.bridj.NativeLibrary.parseSymbol(NativeLibrary.java:454)
    at org.bridj.demangling.Demangler$Symbol.parse(Demangler.java:392)
    at org.bridj.demangling.Demangler$Symbol.getParsedRef(Demangler.java:385)
    at org.bridj.NativeLibrary.scanSymbols(NativeLibrary.java:432)
    at org.bridj.NativeLibrary.getSymbol(NativeLibrary.java:330)
    at org.bridj.NativeLibrary.getSymbol(NativeLibrary.java:244)
    at org.bridj.cpp.CPPRuntime.registerNativeMethod(CPPRuntime.java:357)
    at org.bridj.CRuntime.register(CRuntime.java:453)
    at org.bridj.CRuntime.register(CRuntime.java:344)
    at org.bridj.BridJ.register(BridJ.java:363)
    at org.bridj.BridJ.register(BridJ.java:203)
    at com.github.sarxos.webcam.ds.buildin.natives.OpenIMAJGrabber.<clinit>(OpenIMAJGrabber.java:60)
    at com.github.sarxos.webcam.ds.buildin.WebcamDefaultDriver$WebcamNewGrabberTask.handle(WebcamDefaultDriver.java:56)
    at com.github.sarxos.webcam.WebcamProcessor$AtomicProcessor.run(WebcamProcessor.java:66)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724)
août 06, 2013 9:43:30 PM org.bridj.BridJ log
INFO: Symbol parsing failed : Parsing error at position 1: Expected char 'Z', found 'f' 
    _fini
     ^ (in symbol '_fini')
sarxos commented 11 years ago

Which Webcam Capture version are you using?

stef33560 commented 11 years ago

webcam-capture-0.3.10-RC4-dist :)

I've just finished upgrading from Mint Maya (v13) to Olivia (v15). Huge gap but problem still there.

sarxos commented 11 years ago

Just to be sure that OpenIMAJGrabber.so file is correct, can you please execute:

$ cksum OpenIMAJGrabber.so 
1539953864 49992 OpenIMAJGrabber.so

Can you also check with older BridJ? Last stable version, which is 0.6.2, can be found here:

http://search.maven.org/remotecontent?filepath=com/nativelibs4java/bridj/0.6.2/bridj-0.6.2.jar

stef33560 commented 11 years ago

can you please execute

The same version, "ouf" :)

$ cksum OpenIMAJGrabber.so 
1539953864 49992 OpenIMAJGrabber.so

Can you also check with older BridJ?

Still there ; Note it's not the same letter :-/ ("e" instead of "f"). Dunno what it means :-/

INFO: DEBUG(BridJ): library="/tmp/BridJExtractedLibraries3823600134878157829/OpenIMAJGrabber.so", symbol="_ZN6DeviceC1EPKcS1_", address=7ff64fbe1d6c, demangled="null Device.Device(byte*, byte*)"
org.bridj.demangling.Demangler$DemanglingException: Parsing error at position 1: Expected char 'Z', found 'e' 
    _end

HTH !

sarxos commented 11 years ago

@steph33560, I will be honest with you - I have no idea why this is happening... We have to wait for what Olivier say about this issue. In the meantime I will be continuing investigation.

sarxos commented 11 years ago

Can you please execute:

$ nm ~/Desktop/OpenIMAJGrabber.so 

The output in my case (Ubuntu 12.04) is:

00000000002051a0 d DW.ref.__gxx_personality_v0
0000000000204e08 a _DYNAMIC
0000000000204fe8 a _GLOBAL_OFFSET_TABLE_
                 w _Jv_RegisterClasses
                 U _Unwind_Resume@@GCC_3.0
00000000000033a9 T _Z11init_deviceP13_VideoGrabber
00000000000038ef T _Z11open_deviceP13_VideoGrabber
000000000000389e T _Z12close_deviceP13_VideoGrabber
0000000000001b3c T _Z13getDeviceInfoPKc
0000000000002852 T _Z13grabNextFrameP13_VideoGrabber
0000000000002285 T _Z13process_imageP13_VideoGrabberPvm
0000000000002c5a T _Z13uninit_deviceP13_VideoGrabber
0000000000002980 T _Z14stop_capturingP13_VideoGrabber
00000000000029ee T _Z15start_capturingP13_VideoGrabber
0000000000003186 t _ZL10init_userpP13_VideoGrabberj
000000000000253e t _ZL10read_frameP13_VideoGrabber
0000000000002318 t _ZL6xioctliiPv
00000000000023af t _ZL8set_rateP13_VideoGrabberd
0000000000002370 t _ZL9getIOType15v4l2_capability
0000000000002e6a t _ZL9init_mmapP13_VideoGrabber
0000000000002d7e t _ZL9init_readP13_VideoGrabberj
0000000000001e30 T _ZN10DeviceList13getNumDevicesEv
0000000000001e40 T _ZN10DeviceList9getDeviceEi
0000000000001dde T _ZN10DeviceListC1EPP6Devicei
0000000000001dde T _ZN10DeviceListC2EPP6Devicei
0000000000001e04 T _ZN10DeviceListD1Ev
0000000000001e04 T _ZN10DeviceListD2Ev
0000000000002026 T _ZN15OpenIMAJGrabber10setTimeoutEi
00000000000021f2 T _ZN15OpenIMAJGrabber11stopSessionEv
0000000000002044 T _ZN15OpenIMAJGrabber12startSessionEiid
000000000000207a T _ZN15OpenIMAJGrabber12startSessionEiidP6Device
0000000000001eca T _ZN15OpenIMAJGrabber15getVideoDevicesEv
0000000000001ff0 T _ZN15OpenIMAJGrabber8getImageEv
0000000000002256 T _ZN15OpenIMAJGrabber8getWidthEv
000000000000226e T _ZN15OpenIMAJGrabber9getHeightEv
0000000000002008 T _ZN15OpenIMAJGrabber9nextFrameEv
0000000000001e8a T _ZN15OpenIMAJGrabberC1Ev
0000000000001e8a T _ZN15OpenIMAJGrabberC2Ev
0000000000001ea0 T _ZN15OpenIMAJGrabberD1Ev
0000000000001ea0 T _ZN15OpenIMAJGrabberD2Ev
0000000000001e78 T _ZN6Device13getIdentifierEv
0000000000001e66 T _ZN6Device7getNameEv
0000000000001d6c T _ZN6DeviceC1EPKcS1_
0000000000001d6c T _ZN6DeviceC2EPKcS1_
0000000000001db0 T _ZN6DeviceD1Ev
0000000000001db0 T _ZN6DeviceD2Ev
                 U _ZdaPv@@GLIBCXX_3.4
                 U _ZdlPv@@GLIBCXX_3.4
                 U _Znam@@GLIBCXX_3.4
                 U _Znwm@@GLIBCXX_3.4
0000000000204de8 d __CTOR_END__
0000000000204de0 d __CTOR_LIST__
0000000000204df8 d __DTOR_END__
0000000000204df0 d __DTOR_LIST__
0000000000004340 r __FRAME_END__
0000000000204e00 d __JCR_END__
0000000000204e00 d __JCR_LIST__
00000000002051a8 A __bss_start
                 w __cxa_finalize@@GLIBC_2.2.5
0000000000003a70 t __do_global_ctors_aux
0000000000001a90 t __do_global_dtors_aux
0000000000205198 d __dso_handle
                 U __errno_location@@GLIBC_2.2.5
                 w __gmon_start__
                 U __gxx_personality_v0@@CXXABI_1.3
                 U __stack_chk_fail@@GLIBC_2.4
0000000000003a60 t __stat
                 U __xstat@@GLIBC_2.2.5
00000000002051a8 A _edata
00000000002051b8 A _end
0000000000003aa8 T _fini
0000000000001710 T _init
                 U access@@GLIBC_2.2.5
0000000000001a70 t call_gmon_start
                 U calloc@@GLIBC_2.2.5
                 U close@@GLIBC_2.2.5
00000000002051a8 b completed.6531
00000000002051b0 b dtor_idx.6533
                 U fprintf@@GLIBC_2.2.5
0000000000001b10 t frame_dummy
                 U free@@GLIBC_2.2.5
                 U fwrite@@GLIBC_2.2.5
                 U getenv@@GLIBC_2.2.5
                 U getpagesize@@GLIBC_2.2.5
                 U ioctl@@GLIBC_2.2.5
                 U malloc@@GLIBC_2.2.5
                 U memalign@@GLIBC_2.2.5
                 U memcpy@GLIBC_2.2.5
                 U open@@GLIBC_2.2.5
                 U printf@@GLIBC_2.2.5
                 U select@@GLIBC_2.2.5
                 U sprintf@@GLIBC_2.2.5
0000000000003a60 t stat
                 U stderr@@GLIBC_2.2.5
                 U strcpy@@GLIBC_2.2.5
                 U strdup@@GLIBC_2.2.5
                 U strerror@@GLIBC_2.2.5
                 U v4l2_close
                 U v4l2_ioctl
                 U v4l2_mmap
                 U v4l2_munmap
                 U v4l2_open
                 U v4l2_read
stef33560 commented 11 years ago

Hello

I will be honest with you - I'm totally lost for a while ;) sinking in a large swimming pool ^^

Here are the outputs in my case :+1:

HTH