problem avec les buffer: taille max
Ce si est un bou de code de mon programme "lss":
Code:
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); |
Ce programme Marche a merveille ( sur plusieurs machine LINUX, SUN, HP).
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.
Citation:
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.
dans les fichiers de traces j'ai le message suivant:
Citation:
-->SLAC_Sock::fdOk
<--SLAC_Sock::fdOk
maxPduLength_ is set to 0
PduLen is set to 1195986768
EndLSS by signal 6.
je ne sais pas exactement la cause du crach du programme (lss).
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