OVH Cloud OVH Cloud

limite traitement programme console ?

22 réponses
Avatar
ologram
Bonjour,

Je programme en amateur.

Au boulot nous travaillons sur windows XP avec un =E9mulateur VT320 vers
un programme sur un serveur linux.

Je ne suis pas autoris=E9 =E0 "attaquer" les tables du programme, et pour
pouvoir palier =E0 certains manques de ce programme, je rappatrie des
donn=E9es vers une base de donn=E9es Access.

Pour cela j'ai r=E9alis=E9 une macro en C dans un programme console, qui
fait des copiers/coller vers un fichier txt. J'envois de touches
virtuelles puis je r=E9cup=E8re le clipboard et j'extrais les =E9l=E9ments
qui m'int=E9ressent que je place dans des variables.

Tout fonctionne correctement, sauf quand je lance la macro sur un grand
nombre de "fiches" =E0 copier. J'ai r=E9alis=E9 des tests et ai ajout=E9
proc=E9dures de v=E9rification mais rien =E0 faire mon programme plante
vers le 200=E8me =E9cran copi=E9.

J'ai recopi=E9 les =E9l=E9ments de Dr Watson pour les plantages mais
=E9videmment je ne comprends pas les messages des fautes r=E9pertori=E9es.
J'esp=E8rais avoir toujour le m=EAme message d'erreur mais ce n'est pas
le cas.

Y a t'il une masse maximum d'=E9l=E9ments qu'un programme console peut
traiter ?

Y a t'il moyen de d=E9cripter les messages d'erreurs de Dr WATSON. Sinon
existe t'il un moyen de surveiller mon application et de r=E9cup=E9rer
des informations me permettant de comprendre ce qui plante ?

Merci pour vos informations

ologram

10 réponses

1 2 3
Avatar
ologram
Autres questions concernant les plantages de mon appli.

Serait-il possible que cela soit dû à un problème de saturation du
clipboard, par ex. pas plus de 200 copier/coller ?

ologram
Avatar
mika
"ologram" wrote in message
news:

Tout fonctionne correctement, sauf quand je lance la macro sur un grand
nombre de "fiches" à copier. J'ai réalisé des tests et ai ajouté
procédures de vérification mais rien à faire mon programme plante
vers le 200ème écran copié.
J'ai recopié les éléments de Dr Watson


Ca, c'est forcément un bug dans ton programme (alloc memoire, tableau, ..)
Mais si on le voit pas..
Avatar
ologram
Voici le code.

Ce que je ne comprend pas c'est que si je redémarre à l'endroit où
cela a calé, tout se passe bien jusqu'à 200 copies d'écran plus
loin...

Merci pour vos remarques

ologram
---------
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

void EnvoiToucheNorm( int Touche );
void EnvoiTouchExt( int Touche );
void EnvoiTprixHTVAchComb(int Touche1, int Touche2);
char *ExtractBuf(int coord, int lgueur, char *VarSortie);
char *ExtractBufReel(int coord, int lgueur, char *VarSortie);
char *ExtractBufFormat(int coord, int lgueur, char *VarSortie);
void RecupBuf(void);
void RecupVarBC(void);
void FichierBC(void);
void RecupVarDet(void);
void CopColNotepad(void);
void CopColVt320(void);

char blanc[4]=" ";
char engBCaa[5];
char engBCno[6];
char noBCaa[5];
char noBCno[6];
char Fourn[10];
char dateBC[11];
char noArt[21];
char Art[31];
char nbLignes[10];
/*char *noLigne=(char *)malloc(sizeof(char) * 10); */

struct OutBCD
{
char noLigne[20];
char engBCDaa[5];
char engBCDno[6];
char dateBCD[11];
char detFourn[78];
char noProd[16];
char quantite[20];
char prix[12];
char prixHTVA[12];
char prixTotLigne[13];
char TauxTVA[5];
} BCDvar;

char montTotHTVA[14];
char montTotTVA[14];
char montTotTTC[14];
char AdresLiv[33];
char Tab[3]="t";
char slash[3]="/";
char Ligne[3]="n";
char *ptr;
char *fin="";
int i, j, k, s, inbLignes, InoLigne;
char Buffer[2000];
int comptage;
char Fenetre[]="vt320";
FILE *fp;


int main(int argc, char *argv[])
{

HWND RunFile;
HWND hwnd;
RunFile = FindWindow(Fenetre,NULL);

if (RunFile == 0)
{
MessageBox (NULL, "Aucune fenêtre "ICL" ouverte" , "Erreur", 0
+ MB_ICONSTOP);
return 0;
}
if (RunFile != 0)
{
SetForegroundWindow(FindWindow(Fenetre, NULL));
Sleep(150);
}

comptage = 1;
while (comptage <= 800)
{
CopColVt320();
RecupBuf();
RecupVarBC();
FichierBC();
EnvoiToucheNorm(VK_D);

/* arrivée dans l'écran Detail du bon de commande */
CopColVt320();
RecupBuf();
printf("%sn", Buffer);
VerificationBuf();
ExtractBuf(1873, 9, nbLignes);
printf("nbLignes : %sn", nbLignes);
strrev(nbLignes);
ptr = strchr(nbLignes, '/');
nbLignes[ptr-nbLignes] = '';
strrev(nbLignes);
printf("nbLignes_2 : %sn", nbLignes);
inbLignes = atoi(nbLignes);
printf("inbLignes : %in", inbLignes);

InoLigne = 1;
RecupVarDet();
inbLignes = inbLignes - 6;
printf("inbLignes = %in", inbLignes);

while (inbLignes > 0)
{
printf("inbLignes du for %i = %in", s, inbLignes);
for (i=0; i<6; i++) EnvoiTouchExt(VK_DOWN);
Sleep(1000);
CopColVt320();
Sleep(150);
RecupBuf();
RecupVarDet();
inbLignes = inbLignes -6;
}

EnvoiToucheNorm(VK_E);
EnvoiTouchExt(VK_RIGHT);
Sleep(1000);
inbLignes = 0;
comptage +=1;
}
return 0;
}

void EnvoiTouchExt( int Touche )
{
keybd_event(Touche,MapVirtualKey(Touche,0),KEYEVENTF_EXTENDEDKEY,0);
Sleep(50);
keybd_event(Touche,MapVirtualKey(Touche,0),KEYEVENTF_KEYUP +
KEYEVENTF_EXTENDEDKEY,0);
}
void EnvoiToucheNorm( int Touche )
{
keybd_event(Touche,MapVirtualKey(Touche,0),0,0);
Sleep(50);
keybd_event(Touche,MapVirtualKey(Touche,0),KEYEVENTF_KEYUP,0);
}

void EnvoiTchComb(int Touche1, int Touche2)
{
keybd_event(Touche1,MapVirtualKey(Touche1,0),0,0);
keybd_event(Touche2,MapVirtualKey(Touche2,0),0,0);
keybd_event(Touche1,MapVirtualKey(Touche1,0),KEYEVENTF_KEYUP,0);
}

char *ExtractBuf(int coord, int lgueur,char *VarSortie)
{
j= coord;
for (i=0; i < lgueur; i++, j++)
VarSortie[i] = Buffer[j];
VarSortie[i] = '';
return (VarSortie);
}

char *ExtractBufReel(int coord, int lgueur, char *VarSortie)
{
j= coord;
for (i=0; i < lgueur; i++, j++)
VarSortie[i] = Buffer[j];
VarSortie[i] = '';
strrev(VarSortie);
ptr = strchr(VarSortie, ' ');
VarSortie[ptr-VarSortie] = '';
strrev(VarSortie);
return (VarSortie);
}

char *ExtractBufFormat(int coord, int lgueur, char *VarSortie)
{
j= coord;
for (i=0; i < lgueur; i++, j++)
VarSortie[i] = Buffer[j];
VarSortie[i] = '';
ptr = strstr(VarSortie, blanc);
if (ptr != 0) VarSortie[ptr-VarSortie] = '';
return (VarSortie);
}

void RecupVarDet(void)
{
for (s=0; s < 6 & s < inbLignes; s++)
{
ExtractBufReel(284, 5, BCDvar.engBCDno);
printf("%sn", BCDvar.engBCDno);
ExtractBuf(259, 4, BCDvar.engBCDaa);
printf("%sn", BCDvar.engBCDaa);
itoa(InoLigne, BCDvar.noLigne, 10);
printf("Recup_noLigne = %sn", BCDvar.noLigne);
InoLigne = InoLigne + 1;
ExtractBufFormat(822+(s*82*2), 77, BCDvar.detFourn);
printf("%sn", BCDvar.detFourn);
ExtractBufReel(766+(s*82*2), 11, BCDvar.prixHTVA);
printf("%sn", BCDvar.prixHTVA);
ExtractBuf(794+(s*82*2), 4, BCDvar.TauxTVA);
printf("%sn", BCDvar.TauxTVA);
ExtractBuf(312, 10, BCDvar.dateBCD);
printf("%sn", BCDvar.dateBCD);
ExtractBufReel(753+(s*82*2), 11, BCDvar.quantite);
printf("%sn", BCDvar.quantite);
ExtractBuf(740+(s*82*2), 15, BCDvar.noProd);
printf("%sn", BCDvar.noProd);
ExtractBufReel(802+(s*82*2), 12, BCDvar.prixTotLigne);
printf("%s/%sn", BCDvar.engBCDaa, BCDvar.engBCDno);
printf("InoLigne : %in", InoLigne);
if ((fopen("outBCd.txt", "r"))== NULL)
{
MessageBox (NULL, "Erreur : impossible d'ouvrir outBCd.txt
" , "ERREUR",
0 + MB_ICONEXCLAMATION + MB_SYSTEMMODAL);
printf("Erreur %c l'ouverture de "outBCd.txt"n", 133); /*
%c, 133 = à */
break;
}
else
{
fp = fopen("outBCd.txt", "a");
fputs(BCDvar.engBCDaa, fp);
fputs(Tab, fp);
fputs(BCDvar.engBCDno, fp);
fputs(Tab, fp);
fputs(BCDvar.engBCDaa, fp);
fputs(slash, fp);
fputs(BCDvar.engBCDno, fp);
fputs(Tab, fp);
fputs(BCDvar.noLigne, fp);
fputs(Tab, fp);
fputs(BCDvar.dateBCD, fp);
fputs(Tab, fp);
fputs(BCDvar.detFourn, fp);
fputs(Tab, fp);
fputs(BCDvar.noProd, fp);
fputs(Tab, fp);
fputs(BCDvar.quantite, fp);
fputs(Tab, fp);
fputs(BCDvar.prixHTVA, fp);
fputs(Tab, fp);
fputs(BCDvar.TauxTVA, fp);
fputs(Tab, fp);
fputs(BCDvar.prixTotLigne, fp);
fputs(Ligne, fp);
fclose(fp);
}
}
}

void RecupBuf(void)
{
if (IsClipboardFormatAvailable(CF_TEXT))
{
if (OpenClipboard(0))
{
HGLOBAL hGlobal=GetClipboardData(CF_TEXT);
lstrcpy(Buffer, (char *) GlobalLock(hGlobal));
GlobalUnlock(hGlobal);
CloseClipboard();
}
}
}

void CopColNotepad(void)
{
EnvoiTchComb(VK_CONTROL, VK_A);
Sleep(150);
EnvoiTchComb(VK_CONTROL, VK_C);
Sleep(150);
}

void CopColVt320(void)
{
Sleep(3000);
EnvoiTchComb(VK_MENU, VK_E);
Sleep(150);
EnvoiToucheNorm(VK_A);
Sleep(150);
EnvoiTchComb(VK_MENU, VK_E);
Sleep(150);
EnvoiToucheNorm(VK_C);
}


void RecupVarBC(void)
{
printf("%sn", Buffer);

ExtractBuf(178, 4, noBCaa);
printf("noBCaa = %sn", noBCaa);

ExtractBufReel(185, 5, noBCno);
printf("noBCno = %sn", noBCno);

ExtractBuf(260, 4, engBCaa);
printf("engBCaa = %sn", engBCaa);

ExtractBufReel(272, 5, engBCno);
printf("engBCno = %sn", engBCno);

ExtractBufReel(378, 9, Fourn);
printf("Fourn = %sn", Fourn);

ExtractBuf(426, 10, dateBC);
printf("dateBC = %sn", dateBC);

ExtractBufReel(508, 13, montTotHTVA);
printf("montTotHTVA = %sn", montTotHTVA);

ExtractBufReel(590, 13, montTotTVA);
printf("montTotTVA = %sn", montTotTVA);

ExtractBufReel(672, 13, montTotTTC);
printf("montTotTTC = %sn", montTotTTC);


ExtractBuf(914, 20, noArt);
printf("noArt = %sn", noArt);

ExtractBuf(1408, 30, Art);
printf("Art = %sn", Art);

ExtractBuf(1500, 32, AdresLiv);
printf("AdresLiv = %sn", AdresLiv);

}

void FichierBC(void)
{ if ((fopen("outBC.txt", "r"))== NULL)
{
MessageBox (NULL, "Erreur : impossible d'ouvrir outBC.txt
" , "ERREUR",
0 + MB_ICONEXCLAMATION + MB_SYSTEMMODAL);
printf("Erreur %c l'ouverture de "outBC.txt"n", 133); /*
%c, 133 = à */
/*break; */
}
else
{
fp = fopen("outBC.txt", "a");
fputs(engBCaa, fp);
fputs(Tab, fp);
fputs(engBCno, fp);
fputs(Tab, fp);
fputs(engBCaa, fp);
fputs(slash, fp);
fputs(engBCno, fp);
fputs(Tab, fp);
fputs(noBCaa, fp);
fputs(Tab, fp);
fputs(noBCno, fp);
fputs(Tab, fp);
fputs(noBCaa, fp);
fputs(slash, fp);
fputs(noBCno, fp);
fputs(Tab, fp);
fputs(Fourn, fp);
fputs(Tab, fp);
fputs(dateBC, fp);
fputs(Tab, fp);
fputs(montTotHTVA, fp);
fputs(Tab, fp);
fputs(montTotTVA, fp);
fputs(Tab, fp);
fputs(montTotTTC, fp);
fputs(Tab, fp);
fputs(noArt, fp);
fputs(Tab, fp);
fputs(Art, fp);
fputs(Tab, fp);
fputs(AdresLiv, fp);
fputs(Tab, fp);
fputs(Ligne, fp);
fclose(fp);
}
}
Avatar
Paul Bacelar
Donnez nous le debug des logs de DrWatson pour avoir une idée du type
d'erreur.
Utilisez des outils comme ADPLUS
(http://www.microsoft.com/whdc/devtools/debugging/default.mspx)
Avant de faire des hypothèses, il vaut mieux avoir un maximum d'information
pour ne pas faire fausse route.
--
Paul Bacelar
Avatar
ologram
Est-ce que l'erreur peut provenir de itoa, qui se trouve dans
RecupVarDet() ?

ologram
Avatar
Christian ASTOR
ologram wrote:

ptr = strchr(nbLignes, '/');
nbLignes[ptr-nbLignes] = '';



ptr = strchr(VarSortie, ' ');
VarSortie[ptr-VarSortie] = '';
..................



Déjà, là, si le strchr() ne trouve pas le caractère, ça fera planter la
ligne suivante en "Access violation"...
Avatar
ologram
Tu as raison et je l'ai expérimenté...
Mais j'ai mis des routines de vérification. En fait je ne m'adresse
qu'à 2 "écrans types" ayant toujours la même configuration. Les
éléments que je reprends sont toujours à la même place et on
trouvera d'office les rubriques au même endroit. Cet écran indique
aussi combien de fiches ont été séléctionnées en indiquant "1/805"
par exemple. Ce sont les derniers caractères de la fiche et le dernier
caractère sera toujours à Buffer[1882]. J'ai mis des temporisations
et des vérifications pour être sûr d'avoir le bon écran qui
n'apparaissent pas cela. Les printf me permettent aussi de vérifier si
il y a une merde à ce niveau. Et ce que j'ai relevé (cfr plus haut)
c'est que ça bloque toujours sur la fiche n° 92 quand je lance le
programme à partir de la première fiche. Si je repars de la fiche 91
je passe sur la 92 sans problème... J'ai aussi vérifié si l'écran
92 avait quelque chose de spécial mais je ne vois rien !?
Avatar
Paul Bacelar
Donnez nous le debug des logs de DrWatson pour avoir une idée du type
d'erreur.
Utilisez des outils comme ADPLUS
(http://www.microsoft.com/whdc/devtools/debugging/default.mspx)
Avant de faire des hypothèses, il vaut mieux avoir un maximum d'information
pour ne pas faire fausse route.
--
Paul Bacelar

"ologram" wrote in message
news:
Autres questions concernant les plantages de mon appli.

Serait-il possible que cela soit dû à un problème de saturation du
clipboard, par ex. pas plus de 200 copier/coller ?

ologram
Avatar
ologram
Voici le texte de DrWatson. Après analyse plus fouillée et rejet des
plantages dû à des mauvaises copies, comme le suggérait Christian
ASTOR, le même texte revient à chaque fois.
J'ai testé le programme sans faire tourner itoa et ça plante quand
même, il est donc hors cause.
Concernant ADPLUS, y a-t'il moyen de l'utiliser sans être
administrateur de la machine ?

texte DrWatson

---------------------------
Une exception d'application s'est produite :
App : L:ICL_BCICL_BC0601.exe (pid724)
Lorsque : 16/02/2006 @ 10:53:07.892
Numéro d'exception : c0000005 (violation d'accès)

*----> Informations système <----*
Nom ordinateur : xxx
Nom utilisateur : xxx
ID de la session Terminal : 0
Nombre de processeurs : 1
Type de processeur : x86 Family 15 Model 2 Stepping 9
Version de Windows : 5.1
Numéro actuel : 2600
Service Pack : 1
Type actuel : Uniprocessor Free
Organisation enregistrée :
Propriétaire enregistré : xxx

*----> Liste des tâches <----*
0 System Process
4 Error 0xD0000022
720 Error 0xD0000022
768 Error 0xD0000022
792 Error 0xD0000022
836 Error 0xD0000022
848 Error 0xD0000022
1032 Error 0xD0000022
1104 Error 0xD0000022
1232 Error 0xD0000022
1260 Error 0xD0000022
1336 Error 0xD0000022
1356 Error 0xD0000022
1472 Error 0xD0000022
1608 Error 0xD0000022
1672 Error 0xD0000022
1728 Error 0xD0000022
1796 Error 0xD0000022
1968 Error 0xD0000022
1996 Error 0xD0000022
172 Error 0xD0000022
1716 Explorer.exe
1872 uirgdo.exe
896 igfxtray.exe
1052 hkcmd.exe
772 LpIpClient.exe
2096 DirectCD.exe
2104 qttask.exe
2116 CMESys.exe
2136 ccApp.exe
2148 VPTray.exe
2164 ctfmon.exe
2204 FlashTalk.exe
2276 GMT.exe
2312 LUCOMS~1.EXE
2320 WebSecureAlert.exe
2684 WIN320.EXE
3144 cmd.exe
2744 NOTEPAD.EXE
3724 ICL_BC0601.exe
3940 drwtsn32.exe

*----> Liste des modules <----*
(0000000000400000 - 0000000000407000: L:ICL_BCICL_BC0601.exe
(0000000070a70000 - 0000000070ad5000: C:WINDOWSsystem32SHLWAPI.dll
(0000000077bd0000 - 0000000077bd7000: C:WINDOWSsystem32VERSION.dll
(0000000077be0000 - 0000000077c33000: C:WINDOWSsystem32msvcrt.dll
(0000000077c40000 - 0000000077c80000: C:WINDOWSsystem32GDI32.dll
(0000000077d10000 - 0000000077d9c000: C:WINDOWSsystem32USER32.dll
(0000000077da0000 - 0000000077e3e000: C:WINDOWSsystem32ADVAPI32.dll
(0000000077e40000 - 0000000077f36000: C:WINDOWSsystem32kernel32.dll
(0000000077f40000 - 0000000077fee000: C:WINDOWSSystem32ntdll.dll
(0000000078000000 - 0000000078086000: C:WINDOWSsystem32RPCRT4.dll

*----> Vidage de l'état de la thread 0xc58 <----*

eax000020 ebxfdf000 ecxfde000 edx000020 esi000000
ediwf844a8
eipwf4b2ab esp40fee0 ebp40ff20 iopl=0 nv up ei pl n z na
pe nc
cs1b ss23 ds23 es23 fs38 gs00
efl000202

*** ERROR: Symbol file could not be found. Defaulted to export symbols
for C:WINDOWSSystem32ntdll.dll -
fonction : ntdll!RtlEnterCriticalSection
77f4b299 cc int 3
77f4b29a cc int 3
77f4b29b cc int 3
77f4b29c cc int 3
77f4b29d cc int 3
77f4b29e cc int 3
77f4b29f cc int 3
ntdll!RtlEnterCriticalSection:
77f4b2a0 648b0d18000000 mov ecx,fs:[00000018]
77f4b2a7 8b542404 mov edx,[esp+0x4]
FAUTE ->77f4b2ab 837a1400 cmp dword ptr [edx+0x14],0x0
ds:0023:00000034=????????
77f4b2af 754f jnz
ntdll!RtlEnterCriticalSection+0x60 (77f4b300)
77f4b2b1 f0ff4204 lock inc dword ptr [edx+0x4]
77f4b2b5 7519 jnz
ntdll!RtlEnterCriticalSection+0x30 (77f4b2d0)
77f4b2b7 8b4124 mov eax,[ecx+0x24]
77f4b2ba 89420c mov [edx+0xc],eax
77f4b2bd c7420801000000 mov dword ptr [edx+0x8],0x1
77f4b2c4 33c0 xor eax,eax
77f4b2c6 c20400 ret 0x4
77f4b2c9 8da42400000000 lea esp,[esp]
77f4b2d0 8b4124 mov eax,[ecx+0x24]

*----> Suivi arrière de la pile <----*
*** WARNING: Unable to verify checksum for L:ICL_BCICL_BC0601.exe
*** ERROR: Module load completed but symbols could not be loaded for
L:ICL_BCICL_BC0601.exe
WARNING: Stack unwind information not available. Following frames may
be wrong.
*** ERROR: Symbol file could not be found. Defaulted to export symbols
for C:WINDOWSsystem32kernel32.dll -
ChildEBP RetAddr Args to Child
0240ff20 00401d1f 00404964 00000000 00404969
ntdll!RtlEnterCriticalSection+0xb
0240ff40 004014aa 0240ff6c 0000037f 0240ffa0 ICL_BC0601+0x1d1f
0240ff60 004011c1 00000001 002223d8 002229e0 ICL_BC0601+0x14aa
0240ffa0 004011eb 00000001 e2fbd708 77f4c294 ICL_BC0601+0x11c1
0240ffc0 77e614c7 77f844a8 00000007 7ffdf000 ICL_BC0601+0x11eb
0240fff0 00000000 004011d4 00000000 00000000
kernel32!GetCurrentDirectoryW+0x44

*----> Vidage brut de la pile <----*
000000000240fee0 2d 94 c0 77 20 00 00 00 - 6c dd c0 77 00 00 00 00
-..w ...l..w....
000000000240fef0 a8 44 f8 77 07 00 00 00 - 00 f0 fd 7f 00 f0 fd 7f
.D.w............
000000000240ff00 e0 ff 40 02 04 00 00 00 - f0 fe 40 02 08 fb 40 02
@
000000000240ff10 e0 ff 40 02 b0 3e c0 77 - 20 46 be 77 ff ff ff ff
.w F.w....
000000000240ff20 40 ff 40 02 1f 1d 40 00 - 64 49 40 00 00 00 00 00
@@
000000000240ff30 69 49 40 00 98 14 40 00 - 72 12 40 00 07 00 00 00
@
000000000240ff40 60 ff 40 02 aa 14 40 00 - 6c ff 40 02 7f 03 00 00
`@
000000000240ff50 a0 ff 40 02 9b a7 c1 77 - 00 00 01 00 26 04 02 00
&...
000000000240ff60 a0 ff 40 02 c1 11 40 00 - 01 00 00 00 d8 23 22 00
@......#".
000000000240ff70 e0 29 22 00 a6 11 40 00 - c0 10 40 00 f7 42 53 80
.)"@..BS.
000000000240ff80 5c 47 53 80 88 f6 24 81 - 00 f0 fd 7f 00 00 00 00
GS...$.........
000000000240ff90 01 00 00 00 06 00 00 00 - 00 ad 1c f9 6f 47 53 80
............oGS.
000000000240ffa0 c0 ff 40 02 eb 11 40 00 - 01 00 00 00 08 d7 fb e2
@.........
000000000240ffb0 94 c2 f4 77 c4 14 e6 77 - fe ff ff ff 09 00 00 00
...w...w........
000000000240ffc0 f0 ff 40 02 c7 14 e6 77 - a8 44 f8 77 07 00 00 00

000000000240ffd0 00 f0 fd 7f 05 00 00 c0 - c8 ff 40 02 08 fb 40 02
@.
000000000240ffe0 ff ff ff ff 09 48 e7 77 - 10 12 e7 77 00 00 00 00
.....H.w...w....
000000000240fff0 00 00 00 00 00 00 00 00 - d4 11 40 00 00 00 00 00

0000000002410000 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
................
0000000002410010 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
................

*----> Vidage de l'état de la thread 0xc10 <----*

eax000000 ebx91fbcc ecxwe49b96 edx000000 esi000000
edifdf000
eipfe0304 esp91fb84 ebp91fc20 iopl=0 nv up ei pl n z na
pe nc
cs1b ss23 ds23 es23 fs38 gs00
efl000202

fonction : <nosymbols>
7ffe02f2 0000 add [eax],al
7ffe02f4 0000 add [eax],al
7ffe02f6 0000 add [eax],al
*SharedUserSystemCall:
7ffe02f8 0000 add [eax],al
7ffe02fa 0000 add [eax],al
7ffe02fc 0000 add [eax],al
7ffe02fe 0000 add [eax],al
7ffe0300 8bd4 mov edx,esp
7ffe0302 0f34 sysenter
7ffe0304 c3 ret
7ffe0305 9c pushfd
7ffe0306 810c2400010000 or dword ptr [esp],0x100
7ffe030d 9d popfd
7ffe030e c3 ret
7ffe030f 8bd4 mov edx,esp
7ffe0311 0f05 syscall
7ffe0313 c3 ret
7ffe0314 9c pushfd
7ffe0315 810c2400010000 or dword ptr [esp],0x100
7ffe031c 9d popfd

*----> Suivi arrière de la pile <----*
WARNING: Stack unwind information not available. Following frames may
be wrong.
ChildEBP RetAddr Args to Child
0291fb80 77f4c524 77e55ee0 00000003 0291fbcc *SharedUserSystemCall+0xc
(FPO: [0,0,0])
0291fc20 77e55faa 00000003 0291feb8 00000000
ntdll!NtWaitForMultipleObjects+0xc
00000000 00000000 00000000 00000000 00000000
kernel32!WaitForMultipleObjects+0x17

*----> Vidage brut de la pile <----*
000000000291fb84 24 c5 f4 77 e0 5e e5 77 - 03 00 00 00 cc fb 91 02
$..w.^.w........
000000000291fb94 01 00 00 00 00 00 00 00 - 00 00 00 00 b8 fe 91 02
................
000000000291fba4 60 fc 91 02 00 00 00 00 - 90 2c fa ef 9c af 4f 80
`........,....O.
000000000291fbb4 00 00 00 00 05 00 00 00 - 00 00 00 00 03 00 00 00
................
000000000291fbc4 00 f0 fd 7f 00 d0 fd 7f - 44 06 00 00 40 06 00 00

000000000291fbd4 48 06 00 00 88 f6 24 81 - d0 0b 8e ff 40 2d fa ef
H.....$
000000000291fbe4 46 02 00 00 32 14 53 80 - cc fb 91 02 00 00 00 00
F...2.S.........
000000000291fbf4 14 00 00 00 01 00 00 00 - 00 00 00 00 00 00 00 00
................
000000000291fc04 10 00 00 00 a0 fb 91 02 - a8 2c fa ef ff ff ff ff
.........,......
000000000291fc14 09 48 e7 77 78 32 e6 77 - 00 00 00 00 00 00 00 00
.H.wx2.w........
000000000291fc24 aa 5f e5 77 03 00 00 00 - b8 fe 91 02 00 00 00 00
._.w............
000000000291fc34 ff ff ff ff 00 00 00 00 - 83 fc 91 02 03 00 00 00
................
000000000291fc44 b8 fe 91 02 00 00 00 00 - ff ff ff ff c8 f8 16 00
................
000000000291fc54 91 ad f4 77 73 9b e4 77 - 00 00 00 00 60 fc 91 02
...ws..w....`...
000000000291fc64 55 56 8b 74 24 0c 57 6a - ff 33 ed 55 8d be 58 02
UV.t$.Wj.3.U..X.
000000000291fc74 00 00 57 ff b6 64 02 00 - 00 ff 96 74 02 00 00 89
..W..d.....t....
000000000291fc84 86 6c 02 00 00 8b 86 60 - 02 00 00 3b c5 74 07 50
.l.....`...;.t.P
000000000291fc94 ff 96 80 02 00 00 ff b6 - 5c 02 00 00 ff 96 80 02
...............
000000000291fca4 00 00 8b 86 6c 02 00 00 - 83 f8 ff 74 58 83 c0 80
....l......tX...
000000000291fcb4 83 f8 01 75 50 53 ff b6 - 70 02 00 00 ff 96 7c 02
...uPS..p.....|.
Avatar
Paul Bacelar
Je ne connais pas exactement les droits nécessaires à ADPLUS, mais les
droits administrateurs ne sont pas nécessaires.

Vous avez un souci avec ADPLUS ?



DrWatson montre que c'est dans l'appel à RtlEnterCriticalSection de la Dll
ntdll.dll que survient un AccessViolation. Il est très probable que votre
programme appel plus ou moins indirectement cette méthode du système avec de
mauvais paramètre.

DrWatson montre aussi que vous n'avez pas installé les pdb sur la machine de
test. Ils peuvent être générés même en Release. Cela aurait permis d'avoir
les noms des méthodes dans l'affichage de la pile d'appel.

Si mes souvenirs sont bons, on peut configurer DrWatson pour qu'il génère un
fichier dump utilisable par WinDbg pour avoir les valeurs des variables et
des paramètres lors du crash.
--
Paul Bacelar
1 2 3