Bonjour je commence par un message d'erreur :
Code :
- [noeud11:14001] *** Process received signal ***
- [noeud11:14001] Signal: Segmentation fault (11)
- [noeud11:14001] Signal code: Address not mapped (1)
- [noeud11:14001] Failing at address: 0x1809
- [noeud11:14001] [ 0] /lib64/libpthread.so.0 [0x369b60eb10]
- [noeud11:14001] [ 1] /usr/lib64/libstdc++.so.6(_ZNSs6assignERKSs+0x2e) [0x36a0e9c9de]
- [noeud11:14001] [ 2] ./hier(_ZN14OmegaLongChain9SavePointEv+0x7d2) [0x4c0ae0]
- [noeud11:14001] [ 3] ./hier(_ZN14OmegaLongChain5StartEv+0x3e4) [0x4cedfe]
- [noeud11:14001] [ 4] ./hier(main+0x717) [0x47a2bf]
- [noeud11:14001] [ 5] /lib64/libc.so.6(__libc_start_main+0xf4) [0x369aa1d994]
- [noeud11:14001] [ 6] ./hier(__gxx_personality_v0+0x331) [0x478409]
- [noeud11:14001] *** End of error message ***
|
Vous pouvez remarquer qu'il y a des pointeurs du type 0x47a2bf et d'autres du type 0x36a0e9c9de. C'est ca qui pose problème. Le code est enorme compliqué, en C++, il inclue des librairies C car j'utilise MPI pour paralléliser et a un moment dans mon code, pas toujours au meme selon le nombre de processus qui j'inclu ( bizarre ... ) Les pointeurs doublent de taille.
Un exemple ou j'ai locallisé l'erreur :
Code :
- void* s;
- cerr <<sizeof(s)<<' '<< s << '\n';
- is->Sub(s);
- cerr <<sizeof(s)<<' '<< s << '\n';
|
avec is->Sub(s) qui appelle cette fonction :
Code :
- template<class T>
- void Sub(T& value) {
- char* temp = new char[ sizeof(T)];
- for (unsigned int i=0; i<sizeof(T); i++) {
- temp[i] = SubChar();
- }
- value = ((T*) temp)[0];
- delete[] temp;
- }
|
La sortie est :
Code :
- 8 0x4c34ab
- 8 0x6c2ae4800000000
|
N'importe quelle idée est la bienvenue ...
Merci !