Bonjour à tous,
j'ai un programme Pro*C qui compile bien mais quand je l'exécute j'ai un segmentation fault :
Ce programme fonctionnait en 32 bits mais maintenant qu'on est passé en XL C/C++ Runtime for AIX 5.2 (64 bits) ça ne marche plus...LABEL: CORE_DUMP
IDENTIFIER: A63BEB70
Date/Time: Tue Jul 22 14:46:17 CDT 2008
Sequence Number: 626
Machine Id: 0057246A4C00
Node Id: tls03
Class: S
Type: PERM
Resource Name: SYSPROC
Description
SOFTWARE PROGRAM ABNORMALLY TERMINATED
Probable Causes
SOFTWARE PROGRAM
User Causes
USER GENERATED SIGNAL
Recommended Actions
CORRECT THEN RETRY
Failure Causes
SOFTWARE PROGRAM
Recommended Actions
RERUN THE APPLICATION PROGRAM
IF PROBLEM PERSISTS THEN DO THE FOLLOWING
CONTACT APPROPRIATE SERVICE REPRESENTATIVE
Detail Data
SIGNAL NUMBER
11
USER'S PROCESS ID:
409648
FILE SYSTEM SERIAL NUMBER
14
INODE NUMBER
2048
PROCESSOR ID
0
CORE FILE NAME
/u001/appli/ss10_dev/sh/core
PROGRAM NAME
ss10_SAP_extract
STACK EXECUTION DISABLED
0
ADDITIONAL INFORMATION
strlen 24
fSetHv F8
fExtractS B58
main 248
__start 94
Symptom Data
REPORTABLE
1
INTERNAL ERROR
0
voici le code de la fonction qui je pense pose pb :
je sais qu'il y a peut-être cette histoire de pointeur et d'allocation mémoire...mais j'avoue ne pas trop maîtriser ce concept.
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 /****************************************************************/ /* */ /* Function : fSetHv */ /* */ /* Description : Initialize the value and the length */ /* */ /****************************************************************/ int fSetHv(phvHvName, piIndicator, pcValue) VARCHAR *phvHvName; short *piIndicator; char *pcValue; { if(pcValue == NULL) { strcpy((char *)phvHvName->arr, ""); phvHvName->len = 0; if(piIndicator != NULL) { *piIndicator = -1; } } else { if(piIndicator != NULL) *piIndicator = 0; phvHvName->len = strlen(pcValue); strncpy((char *)phvHvName->arr, pcValue, phvHvName->len); } return((piIndicator != NULL)? *piIndicator : 0); }
j'ai pensé ajouté ça :
mais reste à savoir à quel moment et s'il ne faut pas modifier le code initial.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 phvHvName->arr[phvHvName->len] = '\0';
Pouvez-vous m'aider svp ?
Cat
Partager