Ce si est un bou de code de mon programme "lss":
Ce programme Marche a merveille ( sur plusieurs machine LINUX, SUN, HP).
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 long pduLen; int maxPduLength //maxPduLength_ if it is set to 0 this mean thatno control is done in the PDU size //if the value is 0 , the maxPduLength will not be taken into account //pduLen is the real PDU length SSC_DebugTrace <<"maxPduLength_ is set to "<< maxPduLength_ << endl; if(maxPduLength_ != 0) { if (pduLen > maxPduLength_) pduLen = maxPduLength_; } SSC_DebugTrace <<"PduLen is set to "<< pduLen << endl; char* buf = new char[pduLen + 1l]; result = receiveSocketData(buf, (int) pduLen);
a l'exception d'une machine "HP-UX ipb228 B.11.23 U ia64 1545032245" c'est une HP Itamium.
dans ma console j'ai le message suivant:
End of LSS initialisation.
dans les fichiers de traces j'ai le message suivant:aCC runtime: Uncaught exception of type "bad_alloc".
[HP ARIES32]: Error occured while writing core file for 32 bit
[HP ARIES32]: PA-RISC application /alu/1350OMS9.1/NMC/SEC/7.2.1/lss/bin/lss (got signal 6).
[HP ARIES32]: Core file may not be correct.
je ne sais pas exactement la cause du crach du programme (lss).-->SLAC_Sock::fdOk
<--SLAC_Sock::fdOk
maxPduLength_ is set to 0
PduLen is set to 1195986768
EndLSS by signal 6.
Mais je pense que ce problème est due au dépassement de la taille max que je peu alloue a un buffer dans cette machine.
c'est possible aussi que la PDU soit corrompu ou bien sans le caractère NULL (\0) en fin de PDU.
Est ce qu'il a quelqu'un qui peut me dire si le problème provient de l'un des causes que j'ai évoque.
Est ce qu'il a quelqu'un qui peu me donne une façon en c++ comment je peu prévenir c'est deux problème (taille max du buffer sur une machine, PDU corrompu).
Merci
Partager