JPCAP

looping_8627
JPCAP

Bonjour,

j'ai réalisé un projet sous linux utilisant l'API Jpcap, jusque là pas de problème.

j'ai du migré ce projet sur du solaris 2.8, cela a impliqué

recompilation du projet
recompilation de la librairie de capture libpcap

voici l'erreur rencontré :

PacketCapture: loading native library jpcap.. ok
Using device 'lo0'
Exception in thread "main" java.lang.UnsatisfiedLinkError: open
        at net.sourceforge.jpcap.capture.PacketCapture.open(Native Method)
        at net.sourceforge.jpcap.capture.PacketCapture.open(PacketCapture.java:63)
        at Sniffer.<init>(Sniffer.java:50)
        at Sniffer.main(Sniffer.java:278)

je n'utilise pas le java.library.path mais la variable d'environnement LD_LIBRARY_PATH, le librairie libjpcap.so est bien chargé :

PacketCapture: loading native library jpcap.. ok

mais toutes les méthodes proposé par l'API génère des erreurs, ici open

manque t'il quelque chose ?

fredericmazue

Quote:
je n'utilise pas le java.library.path mais la variable d'environnement LD_LIBRARY_PATH, le librairie libjpcap.so est bien chargé :

Peut être...
Quote:
recompilation de la librairie de capture libpcap
mais toutes les méthodes proposé par l'API génère des erreurs, ici open
manque t'il quelque chose ?

Tel qu'est décrit le phénomène, celui-ci se produit quand une librairie native n'est pas compilée "comme il faut" et que les fonctions ne peuvent être chargée dynamiquement.
Quand au "comme il faut" ça peut être bien des choses. Tout dépend comme le code est écrit et la librairie compilée

fredericmazue

Ah oui j 'oubliais.
Ce ne sont pas forcément les fonctions de la librairie natives qui sont en cause.
Il se peut sous Solaris que par exemple une simple fonction printf ne soit pas trouvée. Du coup toutes les fonctions de la librairie native qui appellent printf vont lever l'exception UnsatisfiedLink error. Voir par exemple ici:
http://www.labo-sun.com/resource-FR-articles-615-0-java-autre-j2se-les-methodes-natives.htm

looping_8627

effectivement j'ai des doutes sur la librairie libjpcap.so malgré que la compilation c'est bien déroulé.

j'ai téléchargé le package lpcap_shared-0.9.5-sol8-sparc-local.gz de
sunfreeware.com, Freeware List for SPARC and Solaris 8
qui m'a fourni la librairie pré compilé comme on peut la trouvé pour linux mais rien y fait.

Je garde bon espoir

fredericmazue

Hum...
Et avec java.library.path qu'est-ce que ça donne ?

fredericmazue

Si ça ne marche pas avec java.library.path non plus,il faudrait que tu regardes les dépendances de cette librairie précompilée.
Peut être qu'elle a besoin d'une librairie absente de ton système, ou plus problablement que la librairie requise est bien présente, mais qu'il manque sur ton système un lien symbolique avec le bon numéro de version.

looping_8627

même resultat avec le -Dlibrary.path=

A priori la solution se trouve dans ton précédent post, le jar fournit par sourceforge pour windows et linux contiennent les fichiers .def et .h, utilisé lors d'un appel à une fonction native, le mien non

je creuse cette idée

fredericmazue

Quote:
-Dlibrary.path=

Non, -Djava.library.path=
Et puis que mets tu à droite de = ?

Quote:
A priori la solution se trouve dans ton précédent post

Possible mais... ->

Quote:
le jar fournit par sourceforge pour windows et linux contiennent les fichiers .def et .h, utilisé lors d'un appel à une fonction native, le mien non

... -> Non, rien à voir.
C'est une éventuelle absence de librairie ou de lien symbolique qu'il faut rechercher. C'est très différent de ce que tu dis.

looping_8627

looping wrote:
même resultat avec le -Dlibrary.path=

oui effetivement, je rectifie -Djava.library.path="le path de libjpcap.so"

Commenet puis-je trouver la librairie manquante ?
j'ai testé ma librairie avec les sources de jpcap et j'ai la même erreur :

PacketCapture: loading native library jpcap.. ok
attempting to find network device..
devices detected: Exception in thread "main" java.lang.UnsatisfiedLinkError: lookupDevices
        at net.sourceforge.jpcap.capture.PacketCapture.lookupDevices(Native Method)
        at net.sourceforge.jpcap.client.CaptureTool.autoDetect(CaptureTool.java:142)
        at net.sourceforge.jpcap.client.CaptureTool.<init>(CaptureTool.java:46)
        at net.sourceforge.jpcap.client.CaptureTool.main(CaptureTool.java:416)

c'est bien ma librairie qui est pourrie

looping_8627

voici ce que me donne ldd

ldd -d /opt/local/lib/libpcap.so
        libsocket.so.1 =>        /lib/libsocket.so.1
        libnsl.so.1 =>   /lib/libnsl.so.1
        libresolv.so.2 =>        /lib/libresolv.so.2
        libc.so.1 =>     /lib/libc.so.1
        libdl.so.1 =>    /lib/libdl.so.1
        libmp.so.2 =>    /lib/libmp.so.2
        /usr/platform/SUNW,Ultra-250/lib/libc_psr.so.1
fredericmazue

Quote:
"le path de libjpcap.so"

Oui mais moi je vouloir le vrai "le path de libjpcap.so" de mes petits yeux porcins :)
Quote:
c'est bien ma librairie qui est pourrie

Pas sur...
Je n'aime pas ta sortie de ldd, avec aucune adresse mémoire, comme si la librairie socket.so.1 n'était pas chargée en mémoire, alors qu'elle aurait du l'être.
Tu as vérifié qu'elle est présente sur le système celle-là ? Et si oui en version 1 ? Si tu n'as pas exactement cette version tu vas devoir créer un lien symbolique pour aller pointer sur ce que tu as.
looping_8627

Quote:
Oui mais moi je vouloir le vrai "le path de libjpcap.so" de mes petits yeux porcins

Voici mes variables

SNIF_PATH=/usr/snif
LD_LIBRARY_PATH=$SNIF_PATH/lib

avec dans SNIF_PATH :

    lib/ les librairies sql/ les scripts sql pour les creations de bases
    src/ les sources du projet
    classes/ les sources compilées
    bin/ les scripts de compilation, lancement, deployement
    conf/ les fichiers de conf
avec dans lib/
    mysql-connector-java-5.0.5-bin.jar libjpcap.so
pour plus de facilité à trouver cette erreur, j'ai ajouté directement les sources de jpcap à mon projet, par conséquent je n'ai plus besoin du jar net.sourceforge.jpcap-0.01.16.jar

Quote:
Je n'aime pas ta sortie de ldd, avec aucune adresse mémoire, comme si la librairie socket.so.1 n'était pas chargée en mémoire, alors qu'elle aurait du l'être.

je n'ai pas de socket.so.1 mais libsocket.so.1 est la même chose ?
looping_8627

un peu plus de détails sur

ldd -d -v /usr/snif/lib/libjpcap.so
find object=libsocket.so.1; required by /usr/snif/lib/libjpcap.so
        libsocket.so.1 =>        /lib/libsocket.so.1
   find version=libsocket.so.1
        libsocket.so.1 (SUNW_0.7) =>     /lib/libsocket.so.1

   find object=libnsl.so.1; required by /usr/snif/lib/libjpcap.so
        libnsl.so.1 =>   /lib/libnsl.so.1
   find version=libnsl.so.1
        libnsl.so.1 (SISCD_2.3) =>       /lib/libnsl.so.1

   find object=libresolv.so.2; required by /usr/snif/lib/libjpcap.so
        libresolv.so.2 =>        /lib/libresolv.so.2

   find object=libc.so.1; required by /usr/snif/lib/libjpcap.so
        libc.so.1 =>     /lib/libc.so.1
   find version=libc.so.1
        libc.so.1 (SUNW_1.19) =>         /lib/libc.so.1

   find object=libnsl.so.1; required by /lib/libsocket.so.1
   find version=libnsl.so.1
        libnsl.so.1 (SUNW_1.7) =>        /lib/libnsl.so.1
        libnsl.so.1 (SUNWprivate_1.1) =>         /lib/libnsl.so.1

   find object=libc.so.1; required by /lib/libsocket.so.1
   find version=libc.so.1
        libc.so.1 (SUNW_1.19) =>         /lib/libc.so.1
        libc.so.1 (SUNWprivate_1.1) =>   /lib/libc.so.1

   find object=libdl.so.1; required by /lib/libnsl.so.1
        libdl.so.1 =>    /lib/libdl.so.1
   find version=libdl.so.1
        libdl.so.1 (SISCD_2.3) =>        /lib/libdl.so.1

   find object=libc.so.1; required by /lib/libnsl.so.1
   find version=libc.so.1
        libc.so.1 (SUNW_1.19) =>         /lib/libc.so.1
        libc.so.1 (SUNWprivate_1.1) =>   /lib/libc.so.1

   find object=libmp.so.2; required by /lib/libnsl.so.1
        libmp.so.2 =>    /lib/libmp.so.2
   find version=libmp.so.2
        libmp.so.2 (SUNW_1.1) =>         /lib/libmp.so.2
        libmp.so.2 (SUNWprivate_1.1) =>  /lib/libmp.so.2

   find object=libsocket.so.1; required by /lib/libresolv.so.2
   find version=libsocket.so.1
        libsocket.so.1 (SUNW_1.4) =>     /lib/libsocket.so.1
        libsocket.so.1 (SUNWprivate_1.1) =>      /lib/libsocket.so.1

   find object=libnsl.so.1; required by /lib/libresolv.so.2
   find version=libnsl.so.1
        libnsl.so.1 (SUNW_1.7) =>        /lib/libnsl.so.1
        libnsl.so.1 (SUNWprivate_1.1) =>         /lib/libnsl.so.1

   find object=libdl.so.1; required by /lib/libresolv.so.2
   find version=libdl.so.1
        libdl.so.1 (SISCD_2.3) =>        /lib/libdl.so.1

   find object=libc.so.1; required by /lib/libresolv.so.2
   find version=libc.so.1
        libc.so.1 (SUNW_1.1) =>  /lib/libc.so.1
        libc.so.1 (SUNWprivate_1.1) =>   /lib/libc.so.1

   find object=libdl.so.1; required by /lib/libc.so.1
   find version=libdl.so.1
        libdl.so.1 (SUNWprivate_1.1) =>  /lib/libdl.so.1

   find object=libc.so.1; required by /lib/libmp.so.2
   find version=libc.so.1
        libc.so.1 (SYSVABI_1.3) =>       /lib/libc.so.1

   find object=/usr/platform/SUNW,Ultra-250/lib/libc_psr.so.1; required by /lib/libc.so.1
        /usr/platform/SUNW,Ultra-250/lib/libc_psr.so.1
looping_8627

pour chaque librairie on a :

find object=libc.so.1; required by /lib/libmp.so.2
find version=libc.so.1
        libc.so.1 (SYSVABI_1.3) =>       /lib/libc.so.1

find object et find version sauf pour le dernier ou on a seulement libc_psr.so.1 sans la version. Cela a t il un impact ?
fredericmazue

Quote:
je n'ai pas de socket.so.1 mais libsocket.so.1 est la même chose ?

Oui c'est bien la même chose. J'aurais du écrire libsock, etc...
Je suis parfois un peu paresseux. :oops:

Quote:
find object et find version sauf pour le dernier ou on a seulement libc_psr.so.1 sans la version. Cela a t il un impact ?

si libc_psr.so.1 est bien présente physiquement cela ne doit pas avoir d'impact.
Si c'est un lien symbolique orphelin alors ça en a un évidemment.
Mais j'ai du mal à imaginer que ton système tourne amputé d'un bout de libc, alors... :?:

C'est curieux ton affaire. Je dois dire que ça m'intrigue, mais je n'ai malheureusement pas beaucoup le temps d'y penser. Peut être plus tard dans la journée.

looping_8627

en tout cas merci de chercher à m'aider
voici un complément d'information sur le déroulement du programme :

truss -aelf sniffer --host dot04 --port 3306 --desc test -i hme0 -r -p -f "port 3306" > ecdb 2>&1

more ecdb

6706/1:         execve("/usr/bin/sh", 0xFFBEFB14, 0xFFBEFB50)  argc = 14
6706/1:          argv: sh /bin/sniffer --host dot04 --port 3306 --desc test -i
6706/1:           hme0 -r -p -f port 3306
6706/1:          envp: PWD=/usr/snif FCEDIT=vi ORACLE_SID=????? TZ=MET
6706/1:           SNIF_PATH=/usr/snif HOSTNAME=dot04
6706/1:           LD_LIBRARY_PATH=/usr/snif/lib HORA=/oracle
6706/1:           CLASSPATH=/usr/snif:/usr/snif/classes:/usr/snif/lib/mysql-connector-java-5.0.5-bin.ja
r
6706/1:           MANPATH=/usr/share/man:/usr/local/man: PS1=dot04:root}
6706/1:           SYBASE=/usr/local/sybase/V11 USER=root
6706/1:           MACHTYPE=sparc-sun-solaris2.6 MAIL=/var/mail/root EDITOR=vi
6706/1:           HOST=dot04 ORACLE_BASE=/oracle JAVA_HOME=/tmp/jre1.5.0_12
6706/1:           ORACLE_HOME=/oracle/product/SunOS/EE.8.1.7
6706/1:           SSH_CLIENT=10.28.64.65 47934 22 LOGNAME=root SHLVL=1
6706/1:           SHELL=/sbin/sh HOSTTYPE=sparc OSTYPE=solaris2.6 HOME=/
6706/1:           TERM=xterm
6706/1:           PATH=/tmp/jre1.5.0_12/bin:/usr/snif:/usr/snif/lib:/bin:/usr/bin:/usr/bin/X11:/usr/loc
al/bin:/usr/local/bin:/usr/sbin:/usr/local/bin:/opt/SUNWspro/bin:/usr/proc/bin:/opt/local/bin/:/opt/sfw
/bin/:/usr/ucb:/usr/ccs/bin:
6706/1:           SSH_TTY=/dev/pts/1 _=/bin/truss
6706/1:         resolvepath("/usr/lib/ld.so.1", "/usr/lib/ld.so.1", 1023) = 16
6706/1:         open("/var/ld/ld.config", O_RDONLY)             Err#2 ENOENT
6706/1:         stat("/usr/snif/lib/libgen.so.1", 0xFFBEF234)   Err#2 ENOENT
6706/1:         stat("/usr/lib/libgen.so.1", 0xFFBEF234)        = 0
6706/1:         open("/usr/lib/libgen.so.1", O_RDONLY)          = 3
6706/1:         fstat(3, 0xFFBEF234)                            = 0
6706/1:         mmap(0x00000000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xFF3A0000
6706/1:         mmap(0x00000000, 98304, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xFF380000
6706/1:         mmap(0xFF396000, 2335, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 24576)
 = 0xFF396000
6706/1:         munmap(0xFF386000, 65536)                       = 0
6706/1:         memcntl(0xFF380000, 6932, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
6706/1:         close(3)                                        = 0
6706/1:         stat("/usr/snif/lib/libc.so.1", 0xFFBEF234)     Err#2 ENOENT
6706/1:         stat("/usr/lib/libc.so.1", 0xFFBEF234)          = 0
6706/1:         open("/usr/lib/libc.so.1", O_RDONLY)            = 3
6706/1:         fstat(3, 0xFFBEF234)                            = 0
6706/1:         mmap(0xFF3A0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF3A0000
6706/1:         mmap(0x00000000, 802816, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xFF280000
6706/1:         mmap(0xFF33C000, 24764, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 70451
2) = 0xFF33C000
6706/1:         munmap(0xFF32C000, 65536)                       = 0
6706/1:         memcntl(0xFF280000, 113504, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
6706/1:         close(3)                                        = 0
6706/1:         stat("/usr/snif/lib/libdl.so.1", 0xFFBEF234)    Err#2 ENOENT
6706/1:         stat("/usr/lib/libdl.so.1", 0xFFBEF234)         = 0
6706/1:         open("/usr/lib/libdl.so.1", O_RDONLY)           = 3
6706/1:         fstat(3, 0xFFBEF234)                            = 0
6706/1:         mmap(0xFF3A0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF3A0000
6706/1:         close(3)                                        = 0
6706/1:         mmap(0x00000000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0
xFF370000
6706/1:         stat("/usr/platform/SUNW,Ultra-250/lib/libc_psr.so.1", 0xFFBEF044) = 0
6706/1:         open("/usr/platform/SUNW,Ultra-250/lib/libc_psr.so.1", O_RDONLY) = 3
6706/1:         fstat(3, 0xFFBEF044)                            = 0
6706/1:         mmap(0x00000000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xFF360000
6706/1:         mmap(0x00000000, 16384, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xFF350000
6706/1:         close(3)                                        = 0
6706/1:         munmap(0xFF360000, 8192)                        = 0
6706/1:         getpid()                                        = 6706 [6705]
6706/1:         getpgid(6706)                                   = 6705
6706/1:         getsid(6706)                                    = 4301
6706/1:         brk(0x0003A0F0)                                 = 0
6706/1:         sysconfig(_CONFIG_SIGRT_MIN)                    = 38
6706/1:         sysconfig(_CONFIG_SIGRT_MAX)                    = 45
6706/1:         sigaltstack(0xFFBEFA04, 0x00000000)             = 0
6706/1:         sigaction(SIGHUP, 0x00000000, 0xFFBEF980)       = 0
6706/1:         sigaction(SIGHUP, 0xFFBEF8E0, 0xFFBEF960)       = 0
6706/1:         sigaction(SIGINT, 0x00000000, 0xFFBEF980)       = 0
6706/1:         sigaction(SIGINT, 0xFFBEF8E0, 0xFFBEF960)       = 0
6706/1:         sigaction(SIGQUIT, 0x00000000, 0xFFBEF980)      = 0
6706/1:         sigaction(SIGQUIT, 0xFFBEF8E0, 0xFFBEF960)      = 0
6706/1:         sigaction(SIGILL, 0x00000000, 0xFFBEF980)       = 0
6706/1:         sigaction(SIGILL, 0xFFBEF8E0, 0xFFBEF960)       = 0
6706/1:         sigaction(SIGTRAP, 0x00000000, 0xFFBEF980)      = 0
6706/1:         sigaction(SIGTRAP, 0xFFBEF8E0, 0xFFBEF960)      = 0
6706/1:         sigaction(SIGABRT, 0x00000000, 0xFFBEF980)      = 0
6706/1:         sigaction(SIGABRT, 0xFFBEF8E0, 0xFFBEF960)      = 0
6706/1:         sigaction(SIGEMT, 0x00000000, 0xFFBEF980)       = 0
6706/1:         sigaction(SIGEMT, 0xFFBEF8E0, 0xFFBEF960)       = 0
6706/1:         sigaction(SIGFPE, 0x00000000, 0xFFBEF980)       = 0
6706/1:         sigaction(SIGFPE, 0xFFBEF8E0, 0xFFBEF960)       = 0
6706/1:         sigaction(SIGBUS, 0x00000000, 0xFFBEF980)       = 0
6706/1:         sigaction(SIGBUS, 0xFFBEF8E0, 0xFFBEF960)       = 0
6706/1:         sigaction(SIGSEGV, 0xFFBEF8E0, 0xFFBEF960)      = 0
6706/1:         sigaction(SIGSYS, 0x00000000, 0xFFBEF980)       = 0
6706/1:         sigaction(SIGSYS, 0xFFBEF8E0, 0xFFBEF960)       = 0
6706/1:         sigaction(SIGPIPE, 0x00000000, 0xFFBEF980)      = 0
6706/1:         sigaction(SIGPIPE, 0xFFBEF8E0, 0xFFBEF960)      = 0
6706/1:         sigaction(SIGALRM, 0x00000000, 0xFFBEF980)      = 0
6706/1:         sigaction(SIGALRM, 0xFFBEF8E0, 0xFFBEF960)      = 0
6706/1:         sigaction(SIGTERM, 0x00000000, 0xFFBEF980)      = 0
6706/1:         sigaction(SIGTERM, 0xFFBEF8E0, 0xFFBEF960)      = 0
6706/1:         sigaction(SIGUSR1, 0x00000000, 0xFFBEF980)      = 0
6706/1:         sigaction(SIGUSR1, 0xFFBEF8E0, 0xFFBEF960)      = 0
6706/1:         sigaction(SIGUSR2, 0x00000000, 0xFFBEF980)      = 0
6706/1:         sigaction(SIGUSR2, 0xFFBEF8E0, 0xFFBEF960)      = 0
6706/1:         sigaction(SIGPWR, 0x00000000, 0xFFBEF980)       = 0
6706/1:         sigaction(SIGPWR, 0xFFBEF8E0, 0xFFBEF960)       = 0
6706/1:         sigaction(SIGURG, 0x00000000, 0xFFBEF980)       = 0
6706/1:         sigaction(SIGURG, 0xFFBEF8E0, 0xFFBEF960)       = 0
6706/1:         sigaction(SIGPOLL, 0x00000000, 0xFFBEF980)      = 0
6706/1:         sigaction(SIGPOLL, 0xFFBEF8E0, 0xFFBEF960)      = 0
6706/1:         sigaction(SIGVTALRM, 0x00000000, 0xFFBEF980)    = 0
6706/1:         sigaction(SIGVTALRM, 0xFFBEF8E0, 0xFFBEF960)    = 0
6706/1:         sigaction(SIGPROF, 0x00000000, 0xFFBEF980)      = 0
6706/1:         sigaction(SIGPROF, 0xFFBEF8E0, 0xFFBEF960)      = 0
6706/1:         sigaction(SIGXCPU, 0x00000000, 0xFFBEF980)      = 0
6706/1:         sigaction(SIGXCPU, 0xFFBEF8E0, 0xFFBEF960)      = 0
6706/1:         sigaction(SIGXFSZ, 0x00000000, 0xFFBEF980)      = 0
6706/1:         sigaction(SIGXFSZ, 0xFFBEF8E0, 0xFFBEF960)      = 0
6706/1:         sigaction(SIGRTMIN, 0xFFBEF8E0, 0xFFBEF960)     = 0
6706/1:         sigaction(SIGRTMIN+1, 0xFFBEF8E0, 0xFFBEF960)   = 0
6706/1:         sigaction(SIGRTMIN+2, 0xFFBEF8E0, 0xFFBEF960)   = 0
6706/1:         sigaction(SIGRTMIN+3, 0xFFBEF8E0, 0xFFBEF960)   = 0
6706/1:         sigaction(SIGRTMAX-3, 0xFFBEF8E0, 0xFFBEF960)   = 0
6706/1:         sigaction(SIGRTMAX-2, 0xFFBEF8E0, 0xFFBEF960)   = 0
6706/1:         sigaction(SIGRTMAX-1, 0xFFBEF8E0, 0xFFBEF960)   = 0
6706/1:         sigaction(SIGRTMAX, 0xFFBEF8E0, 0xFFBEF960)     = 0
6706/1:         brk(0x0003A0F8)                                 = 0
6706/1:         brk(0x0003A2F8)                                 = 0
6706/1:         brk(0x0003A4F8)                                 = 0
6706/1:         getuid()                                        = 0 [0]
6706/1:         getuid()                                        = 0 [0]
6706/1:         getgid()                                        = 1 [1]
6706/1:         getgid()                                        = 1 [1]
6706/1:         open64("/bin/sniffer", O_RDONLY)                = 3
6706/1:         close(19)                                       Err#9 EBADF
6706/1:         fcntl(3, F_DUPFD, 0x00000013)                   = 19
6706/1:         close(3)                                        = 0
6706/1:         fcntl(19, F_SETFD, 0x00000001)                  = 0
6706/1:         ioctl(2, TCGETA, 0xFFBEF92C)                    Err#25 ENOTTY
6706/1:         read(19, " #   / b i n / k s h\n\n".., 128)     = 128
6706/1:         brk(0x0003A7F8)                                 = 0
6706/1:         brk(0x0003A5F8)                                 = 0
6706/1:         brk(0x0003A9F8)                                 = 0
6706/1:         brk(0x0003A7F8)                                 = 0
6706/1:         brk(0x0003A5F8)                                 = 0
6706/1:         read(19, " P A T H } : $ { S N I F".., 128)     = 128
6706/1:         brk(0x0003AAF8)                                 = 0
6706/1:         brk(0x0003A8F8)                                 = 0
6706/1:         read(19, " . 0 . 5 - b i n . j a r".., 128)     = 128
6706/1:         brk(0x0003A6F8)                                 = 0
6706/1:         chdir("/usr/snif")                              = 0
6706/1:         read(19, "   l e   s c r i p t   p".., 128)     = 128
6706/1:         read(19, "   3 3 0 7   - - d e s c".., 128)     = 128
6706/1:         read(19, " C L A S S P A T H   S n".., 128)     = 128
6706/1:         brk(0x0003ACF8)                                 = 0
6706/1:         getuid()                                        = 0 [0]
6706/1:         stat64("/tmp/jre1.5.0_12/bin/java", 0xFFBEF4C8) = 0
6706/1:         access("/tmp/jre1.5.0_12/bin/java", 9)          = 0
6706/1:         read(19, " 0 2 4 m   - c l a s s p".., 128)     = 128
6706/1:         read(19, " "   " $ 4 "\n\t ; ;\n  ".., 128)     = 128
6706/1:         read(19, " 2 4 m   - c l a s s p a".., 128)     = 128
6706/1:         read(19, "   " $ 1 "   " $ 2 "   "".., 128)     = 128
6706/1:         read(19, " 6 "   " $ 7 "   " $ 8 "".., 128)     = 128
6706/1:         brk(0x0003B3F8)                                 = 0
6706/1:         read(19, "       1 0 )   j a v a  ".., 128)     = 128
6706/1:         read(19, " a   - X m s 3 2 m   - X".., 128)     = 128
6706/1:         read(19, " - X m s 3 2 m   - X m x".., 128)     = 128
6706/1:         read(19, "   j a v a   - X m s 3 2".., 128)     = 128
6706/1:         read(19, " } "\n\t ; ;\n         1".., 128)     = 128
6706/1:         read(19, "   " $ { 1 2 } "   " $ {".., 128)     = 128
6706/1:         read(19, " "   " $ 9 "   " $ { 1 0".., 128)     = 128
6706/1:         brk(0x0003BBF8)                                 = 0
6706/1:         read(19, " "   " $ 3 "   " $ 4 "  ".., 128)     = 128
6706/1:         read(19, " X m x 1 0 2 4 m   - c l".., 128)     = 48
/bin/sniffer6706/1:             write(2, " / b i n / s n i f f e r", 12)        = 12
: 6706/1:               write(2, " :  ", 2)                             = 2
bad substitution6706/1:         write(2, " b a d   s u b s t i t u".., 16)      = 16

6706/1:         write(2, "\n", 1)                               = 1
6706/1:         llseek(0, 0, SEEK_CUR)                          = 354341
6706/1:         _exit(1)
fredericmazue

Ce semble être là:

Quote:

6706/1: open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENT
6706/1: stat("/usr/snif/lib/libgen.so.1", 0xFFBEF234) Err#2 ENOENT

Peut être ton fichier ld.config est corrompu ou ne contient pas ce qu'il devrait ou peut être aussi que LD_LIBRARY_PATH surcharge quelque chose quelle ne devrait pas.

Au vu de cela, à ta place je:

- vérifirais ld.config
- enleverais LD_LIBRARY_PATH complètement du système ou sinon au moins pour lancer l'appli.
- et bien sûr utiliserais exclusivement -Djava.library.path en attendant d'y voir plus clair.

Je sais que tu as déjà essayé -Djava.library.path mais LD_LIBRARY_PATH est prioritaire dessus (ce me semble)

looping_8627

Quote:

6706/1: open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENT
6706/1: stat("/usr/snif/lib/libgen.so.1", 0xFFBEF234) Err#2 ENOENT

le fichier libgen.so.1 est bien présent
dans un premier temps, il est chercher dans :
"/usr/snif/lib/libgen.so.1" Err#2 ENOENT
il n'est pas trouvé dans ce répertoire puis dans un deuxième temps dans
"/usr/lib/libgen.so.1" = 0
là il est touvé

quant à ld.config il n'existe pas. bon je test tout çà

fredericmazue

Au fait cette librairie native, elle est écrite en quoi, C ou C++ ?
Je me demande si tu as la même erreur dans le cas où tu as compilé et dans le cas où tu utilises celle précompilée.
Mêmes symptômes oui, mais même erreur, je commence à me demander.

looping_8627

la librairie libpcap.so est écrite en C
lorsque j'utilise la librairie pré-compilé pour linux, j'ai l'erreur :

PacketCapture: loading native library jpcap.. Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/snif/lib/libjpcap.so: ld.so.1: /LOCAL/java/jdk1.5.0_06/bin/exec/java: fatal: /usr/snif/lib/libjpcap.so: wrong ELF data format: ELFDATA2LSB
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1676)
        at java.lang.Runtime.loadLibrary0(Runtime.java:822)
        at java.lang.System.loadLibrary(System.java:992)
        at net.sourceforge.jpcap.capture.PacketCapture.<clinit>(PacketCapture.java:174)
        at Sniffer.main(Sniffer.java:66)

lorque j'utilise la librairie pré-compile (installé par un package) ou celle que j'ai compilé moi même, là j'ai la même erreur du genre :
PacketCapture: loading native library jpcap.. ok
Exception in thread "main" java.lang.UnsatisfiedLinkError: lookupDevices
        at net.sourceforge.jpcap.capture.PacketCapture.lookupDevices(Native Method)
        at Sniffer.main(Sniffer.java:66)
fredericmazue

Quote:
pré-compilé pour linux, j'ai l'erreur

Normal..

Quote:
lorque j'utilise la librairie pré-compile (installé par un package) ou celle que j'ai compilé moi même, là j'ai la même erreur du genre :

J'appelle ça les mêmes symptômes. Peut être que la raison est différente pour chacune.