Bonsoir !

J'ai un problème qui se produit de temps en temps sur mon appli qui tourne dans une JVM et appelle du code C++ via une couche JNI.
De manière aléatoire, j'obtiens un crash complet de la JVM avec la trace d'erreur suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
*** glibc detected *** ./monappli.exe: malloc(): memory corruption: 0x08a2b7c8 ***
======= Backtrace: =========
/lib/i686/libc.so.6[0xb7cea8c6]
/lib/i686/libc.so.6(__libc_malloc+0x94)[0xb7cec2a4]
/usr/java/jdk1.6.0_13/jre/lib/i386/client/libjvm.so[0x630a60a]
/usr/java/jdk1.6.0_13/jre/lib/i386/client/libjvm.so[0x63b842f]
[0xb36dd792]
[0xb342ceeb]
[0xb342cfcd]
[0xb342ce67]
[0xb37d6420]
[0xb342ce67]
[0xb342cfcd]
[0xb342d4a9]
[0xb342cfcd]
[0xb342cfcd]
[0xb342cfcd]
[0xb35c743d]
[0xb35c5c7c]
[0xb35bcd6d]
[0xb36f0d72]
[0xb342cfc0]
[0xb342cfcd]
[0xb342cfcd]
[0xb342cfcd]
[0xb342a2cc]
/usr/java/jdk1.6.0_13/jre/lib/i386/client/libjvm.so[0x621b25d]
/usr/java/jdk1.6.0_13/jre/lib/i386/client/libjvm.so[0x630f998]
/usr/java/jdk1.6.0_13/jre/lib/i386/client/libjvm.so[0x621ab70]
/usr/java/jdk1.6.0_13/jre/lib/i386/client/libjvm.so[0x621abfd]
/usr/java/jdk1.6.0_13/jre/lib/i386/client/libjvm.so[0x628b265]
/usr/java/jdk1.6.0_13/jre/lib/i386/client/libjvm.so[0x63a03dd]
/usr/java/jdk1.6.0_13/jre/lib/i386/client/libjvm.so[0x6310ac9]
/lib/i686/libpthread.so.0[0xb7e204e2]
/lib/i686/libc.so.6(clone+0x5e)[0xb7d5347e]
======= Memory map: ========
06000000-0642a000 r-xp 00000000 08:07 32170      /usr/java/jdk1.6.0_13/jre/lib/i386/client/libjvm.so
0642a000-06444000 rw-p 0042a000 08:07 32170      /usr/java/jdk1.6.0_13/jre/lib/i386/client/libjvm.so
06444000-06864000 rw-p 06444000 00:00 0
08048000-0829b000 r-xp 00000000 08:08 585427     /home/monappli.exe
0829b000-082a0000 rw-p 00253000 08:08 585427     /home/monappli.exe
082a0000-08d71000 rw-p 082a0000 00:00 0          [heap]
70000000-70930000 rwxp 70000000 00:00 0
70930000-72760000 rwxp 70930000 00:00 0
72760000-79481000 rwxp 72760000 00:00 0
etc ...
Il semblerait que le problème intervienne dans le tas :
malloc(): memory corruption: 0x08a2b7c8
Et :
082a0000-08d71000 rw-p 082a0000 00:00 0 [heap]
Après avoir exploré plusieurs pistes pour trouver le problème, il semble que ceci se produise à la suite d'une passe du garbage collector en "Full GC".
Quelqu'un pourrait-il m'aider à confirmer ou infirmer la piste de JNI + Full GC pour ce qui est de la cause du problème ?

Merci d'avance !