|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
[C] Allineamento dei campi delle struct: macro che vada bene e per GCC e per Visual S
Recentemente ho avuto un problema di segmentation fault. L'applicazione compilata con GCC a 64 bit, su Linux, funzionava correttamente. Compilata a 32 bit, con l'opzione -m32, mi dava segfault.
Debuggando con GNU gdb mi sono accorto che si trattava di un problema di allineamento dei campi delle struct. Ho risolto con la seguente macro: Codice:
#ifndef MACROS_H #define MACROS_H #define ATTR_ALIGNED __attribute__ ((aligned)) #endif /*MACROS_H*/ Codice:
typedef struct tagArrayDef
{
void *pArray ATTR_ALIGNED;
int countIndexes ATTR_ALIGNED;
/*int *indexes ATTR_ALIGNED;*/
int *sizes ATTR_ALIGNED;
struct nodeTypeTag **indexes ATTR_ALIGNED;
} ArrayDef;
Ma adesso ho il problema della portabilità. La macro va bene in GCC/Linux ma non in Visual Studio/Windows. Devo inserire delle macro di compilazione condizionale. C'è un equivalente di "__attribute__ ((aligned))" in Visual Studio? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12869
|
Mi sembra strano tu abbia dei problemi di allineamento (i processori attuali Intel non dovrebbero avere di questi problemi, non so gli AMD).
Non capisco perché dovrebbe andare in segmentation (se non erro c'è uno specifico errore per l'accesso non allineato, diverso dal segmentation), non è che fai qualche gioco strano con i puntatori non tenendo conto delle differenze di size tra 32 e 64 bit? Analizzando la struttura hai le seguenti dimensioni: Codice:
@32bit: void* 4 bytes int 4 bytes int* 4 bytes nodeTypeTag** 4 bytes Totale: 16 bytes. Codice:
@64bit: void* 8 bytes int 4 bytes int* 8 bytes nodeTypeTag** 8 bytes Totale: 28 bytes (non so se fa padding tra int e int*, arrivando ad occupare 32 bytes). Ultima modifica di WarDuck : 03-01-2013 alle 12:13. |
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Pure a me sembra strano(e ci stavo impazzendo sopra). Si tratta dei sorgenti del Contest 17. Finora avevo compilato con Visual studio e il programma andava bene e a 32 bit e a 64 bit.
Compilando con GCC per linux, invece, la versione a 64 bit andava bene e la versione a 32 bit andava in crash. Ho risolto con "__attribute__ ((aligned))". Con visual studio si può utilizzare "__declspec(align(x))" ma va messo prima della dichiarazione della variabile. Ho risolto così: Codice:
#ifndef MACROS_H #define MACROS_H #if defined(_WIN32) #define PREFIX_ALIGNED __declspec(align(4)) #define SUFFIX_ALIGNED #else #define SUFFIX_ALIGNED __attribute__ ((aligned)) #define PREFIX_ALIGNED #endif #endif /*MACROS_H*/ Codice:
typedef struct tagArrayDef
{
PREFIX_ALIGNED void *pArray SUFFIX_ALIGNED;
PREFIX_ALIGNED int countIndexes SUFFIX_ALIGNED;
PREFIX_ALIGNED int *sizes SUFFIX_ALIGNED;
PREFIX_ALIGNED struct nodeTypeTag **indexes SUFFIX_ALIGNED;
} ArrayDef;
Ultima modifica di Vincenzo1968 : 03-01-2013 alle 13:04. |
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Con l'accorgimento di cui sopra il programma funziona anche su Linux a 32 bit:
![]() ![]() ![]() Senza l'accorgimento invece: A 64 bit andava bene: ![]() ![]() A 32 bit, segmentation fault: ![]()
Ultima modifica di Vincenzo1968 : 03-01-2013 alle 14:06. |
|
|
|
|
|
#5 | |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Che mi venga un colpo!
C'è anche la possibilità di usare "#pragma pack": http://en.wikipedia.org/wiki/Data_structure_alignment Quote:
Faccio una prova...
Ultima modifica di Vincenzo1968 : 03-01-2013 alle 14:54. |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Concordo con WarDuck: non è possibile che un programma non funzioni per questioni di allineamento. Non è possibile su x86 e x64, che possono leggere valori completamente disallineati, ma neppure coi RISC che hanno l'obbligo di leggere le word a indirizzi allineati opportunamente, perché è il compilatore che si occupa di allineare le strutture in maniera adeguata in questi casi, per evitare a monte il problema.
Il problema è sicuramente un altro. Accertati che magari non sia un bug del GCC. E' ben noto che in passato ne abbia avuti proprio sull'allineamento, perché, ad esempio, generava codice ottimizzato per le SSE, ma senza allineare correttamente lo stack a 128 bit all'inizio di una funzione, per cui a seguito di una chiamata con lo stack disallineato, la CPU andava in segmentation fault alla prima istruzione SSE che facesse accesso alle variabili locali della funzione.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#7 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Ehm Cesare, non so che dirti.
Il fatto strano è che con Visual Studio il programma va bene a 32 e a 64 bit anche senza usare l'allineamento. Con GCC, se non uso l'allineamento, il programma a 32 bit mi crasha. Sarà, come dici tu, un bug del GCC ma non ho trovato niente su google(ieri stavo impazzendo a forza di googlare, controllare il codice... ricontrollare il codice, rigooglare...). Fatto sta che usando l'allineamento il programma va bene per tutte le piattaforme/sistemi(32/64 bit, Visual Studio/GCC). Boh! Ah, il "pragma pack" non va bene. Ho provato ma con GCC/32 bit ho di nuovo il segfault. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
E' sicuramente un bug o qualche altro motivo. Non esiste che in C si debba per forza ricorrere a direttive per l'allineamento del codice, pena la mancanza di portabilità perché il codice non funziona.
In 25 anni che ho avuto a che fare col C non m'è mai successo, e le mie applicazioni hanno girato tranquillamente su architetture a 16, 32, 64 bit, dagli 8086 ai PA-RISC di HP.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12869
|
Dal debugger si evince che p punta ad un indirizzo sballato (0x29), bisognerebbe capire come fai ad ottenere quel valore.
Per curiosità hai provato a far stampare un sizeof di quella struttura prima a 32 e poi a 64 bit e vedere se tornano i conti? |
|
|
|
|
|
#10 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Faccio la prova e ti faccio sapere. Domani però che fino a poco fa ho dovuto combattere con un cliente rognosissimo e sono stanco morto.
Se vuoi dare un'occhiata ai sorgenti li trovi qui: http://www.hwupgrade.it/forum/showpo...92&postcount=5 Prima che chiamasse 'sto rompi... avevo provato a compilare con GCC per Windows(MinGW) e il bello è che, come per Visual Studio, funzionano entrambe le versioni(32/64 bit) anche senza allineamento. Mah! Occhio: per compilare a 64 bit con GCC su Windows dovete utilizzare questa versione di MinGW: http://sourceforge.net/projects/ming...urce=directory http://mingw-w64.sourceforge.net/ Ultima modifica di Vincenzo1968 : 03-01-2013 alle 21:23. |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Tipicamente queste cose capitano o perche' da qualche parte si fa una errata assunzione sulla dimensione dei tipi (strutture e/o primitive), oppure perche' c'e' un errore di memoria "latente" che si manifesta solo in alcune condizioni.
Se "aggiustando" l'allineamento la cosa si sistema, puo' essere che sfori una struct da qualche parte (sospettato numero uno: errato o mancato ridimensionamento di quell'array di dimensione uno che usi in una delle strutture). Se la struttura ha una dimensione che non e' multiplo dell'allineamento usato (e.g. allineamento a 4 byte, struttura di 10) un eventuale sforamento non ha gravi ripercussioni perche' vai a lavorare nei byte di padding. Se invece la dimensione e' giusto un multiplo puoi finire per smadonnare nella memoria di un'altra istanza, o nello stack. Io darei una controllata con valgrind.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
#12 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Valgrind?
Googlo un attimo, installo(se non è già installato) e ti faccio sapere. Edit: ![]() Ultima modifica di Vincenzo1968 : 04-01-2013 alle 14:18. |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Non e' di immediato uso ma ci sono diversi tutorial online. Dovresti trovarlo nel repository di ubuntu. Installa anche kcachegrind che e' un comodo tool grafico per visualizzarne i risultati (valgrind di suo e' solo da linea di comando). Ci sono anche altri tool simili. Trovi qualche riferimento qua http://code.google.com/p/address-san...nOfMemoryTools
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#14 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
![]()
|
|
|
|
|
|
#15 | |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Quote:
![]()
|
|
|
|
|
|
|
#16 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
![]() |
|
|
|
|
|
#17 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Risolto: bisognava installare libc-dbg a 32 bit: libc6-dbg:i386.
Ma adesso l'output è troppo lungo per il terminale. Ho provato a redirezionare con "> output.txt" ma crea il file con solo l'output del mio programma. L'output di valgrind viene sempre stampato a video e non riesco a leggerlo tutto. Come si fa, su Linux, a redirezionare l'output su file? Codice:
vincenzo@Ubuntu12-10-AMD64:~/Contest17$ valgrind --leak-check=yes ./Contest1732debug Files/prog01.txt > outputValgrind.txt Ultima modifica di Vincenzo1968 : 04-01-2013 alle 15:22. |
|
|
|
|
|
#18 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Risolto. C'è l'opzione --log-file
Codice:
vincenzo@Ubuntu12-10-AMD64:~/Contest17$ valgrind --leak-check=yes --log-file=outValgrind.txt ./Contest1732debug Files/prog01.txt Codice:
==30226== Memcheck, a memory error detector ==30226== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al. ==30226== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info ==30226== Command: ./Contest1732debug Files/prog01.txt ==30226== Parent PID: 29996 ==30226== ==30226== Invalid write of size 1 ==30226== at 0x402C6C5: strcpy (mc_replace_strmem.c:438) ==30226== by 0x805CA2E: GetNextToken (scanner.c:296) ==30226== by 0x80584C9: Parse (parser.c:107) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4202cdb is 0 bytes after a block of size 3 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80584C9: Parse (parser.c:107) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid write of size 1 ==30226== at 0x402C6C5: strcpy (mc_replace_strmem.c:438) ==30226== by 0x805CA2E: GetNextToken (scanner.c:296) ==30226== by 0x80591C2: type (parser.c:602) ==30226== by 0x805910F: decl (parser.c:579) ==30226== by 0x8058984: decl_list (parser.c:357) ==30226== by 0x8058955: program (parser.c:340) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4202d11 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80591C2: type (parser.c:602) ==30226== by 0x805910F: decl (parser.c:579) ==30226== by 0x8058984: decl_list (parser.c:357) ==30226== by 0x8058955: program (parser.c:340) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid read of size 1 ==30226== at 0x402C6AD: strcpy (mc_replace_strmem.c:438) ==30226== by 0x8059296: var_list (parser.c:632) ==30226== by 0x805911F: decl (parser.c:581) ==30226== by 0x8058984: decl_list (parser.c:357) ==30226== by 0x8058955: program (parser.c:340) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4202d11 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80591C2: type (parser.c:602) ==30226== by 0x805910F: decl (parser.c:579) ==30226== by 0x8058984: decl_list (parser.c:357) ==30226== by 0x8058955: program (parser.c:340) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid read of size 1 ==30226== at 0x805DAD3: htFind (symtab.c:78) ==30226== by 0x805E47B: scopeFind (symtab.c:407) ==30226== by 0x80592EF: var_list (parser.c:641) ==30226== by 0x805911F: decl (parser.c:581) ==30226== by 0x8058984: decl_list (parser.c:357) ==30226== by 0x8058955: program (parser.c:340) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4202d11 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80591C2: type (parser.c:602) ==30226== by 0x805910F: decl (parser.c:579) ==30226== by 0x8058984: decl_list (parser.c:357) ==30226== by 0x8058955: program (parser.c:340) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid read of size 1 ==30226== at 0x805DAD3: htFind (symtab.c:78) ==30226== by 0x805E4CB: scopeInsert (symtab.c:423) ==30226== by 0x80593C7: var_list (parser.c:658) ==30226== by 0x805911F: decl (parser.c:581) ==30226== by 0x8058984: decl_list (parser.c:357) ==30226== by 0x8058955: program (parser.c:340) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4202d11 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80591C2: type (parser.c:602) ==30226== by 0x805910F: decl (parser.c:579) ==30226== by 0x8058984: decl_list (parser.c:357) ==30226== by 0x8058955: program (parser.c:340) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid read of size 1 ==30226== at 0x805DC0A: htInsert (symtab.c:111) ==30226== by 0x805E53E: scopeInsert (symtab.c:429) ==30226== by 0x80593C7: var_list (parser.c:658) ==30226== by 0x805911F: decl (parser.c:581) ==30226== by 0x8058984: decl_list (parser.c:357) ==30226== by 0x8058955: program (parser.c:340) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4202d11 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80591C2: type (parser.c:602) ==30226== by 0x805910F: decl (parser.c:579) ==30226== by 0x8058984: decl_list (parser.c:357) ==30226== by 0x8058955: program (parser.c:340) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid read of size 1 ==30226== at 0x402C653: strlen (mc_replace_strmem.c:399) ==30226== by 0x805D91A: htNewNode (symtab.c:22) ==30226== by 0x805DC8C: htInsert (symtab.c:119) ==30226== by 0x805E53E: scopeInsert (symtab.c:429) ==30226== by 0x80593C7: var_list (parser.c:658) ==30226== by 0x805911F: decl (parser.c:581) ==30226== by 0x8058984: decl_list (parser.c:357) ==30226== by 0x8058955: program (parser.c:340) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4202d11 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80591C2: type (parser.c:602) ==30226== by 0x805910F: decl (parser.c:579) ==30226== by 0x8058984: decl_list (parser.c:357) ==30226== by 0x8058955: program (parser.c:340) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid read of size 1 ==30226== at 0x402C6AD: strcpy (mc_replace_strmem.c:438) ==30226== by 0x805D965: htNewNode (symtab.c:29) ==30226== by 0x805DC8C: htInsert (symtab.c:119) ==30226== by 0x805E53E: scopeInsert (symtab.c:429) ==30226== by 0x80593C7: var_list (parser.c:658) ==30226== by 0x805911F: decl (parser.c:581) ==30226== by 0x8058984: decl_list (parser.c:357) ==30226== by 0x8058955: program (parser.c:340) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4202d11 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80591C2: type (parser.c:602) ==30226== by 0x805910F: decl (parser.c:579) ==30226== by 0x8058984: decl_list (parser.c:357) ==30226== by 0x8058955: program (parser.c:340) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid write of size 1 ==30226== at 0x402C6C5: strcpy (mc_replace_strmem.c:438) ==30226== by 0x805CA2E: GetNextToken (scanner.c:296) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x8059136: decl (parser.c:583) ==30226== by 0x8058984: decl_list (parser.c:357) ==30226== by 0x8058955: program (parser.c:340) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4202ddd is 0 bytes after a block of size 5 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x8059136: decl (parser.c:583) ==30226== by 0x8058984: decl_list (parser.c:357) ==30226== by 0x8058955: program (parser.c:340) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid write of size 1 ==30226== at 0x402C6C5: strcpy (mc_replace_strmem.c:438) ==30226== by 0x805CA2E: GetNextToken (scanner.c:296) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x805987D: code_block (parser.c:803) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4202e11 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x805987D: code_block (parser.c:803) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid read of size 1 ==30226== at 0x805DAD3: htFind (symtab.c:78) ==30226== by 0x805E47B: scopeFind (symtab.c:407) ==30226== by 0x805A248: stmt (parser.c:1045) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4202e11 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x805987D: code_block (parser.c:803) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid read of size 1 ==30226== at 0x402D2EA: strcmp (mc_replace_strmem.c:725) ==30226== by 0x805DB0C: htFind (symtab.c:86) ==30226== by 0x805E47B: scopeFind (symtab.c:407) ==30226== by 0x805A248: stmt (parser.c:1045) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4202e11 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x805987D: code_block (parser.c:803) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid read of size 1 ==30226== at 0x402C6AD: strcpy (mc_replace_strmem.c:438) ==30226== by 0x805A296: stmt (parser.c:1053) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4202e11 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x805987D: code_block (parser.c:803) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid write of size 1 ==30226== at 0x402C6C5: strcpy (mc_replace_strmem.c:438) ==30226== by 0x805CA2E: GetNextToken (scanner.c:296) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x805A941: stmt (parser.c:1248) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4202f65 is 0 bytes after a block of size 5 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x805A941: stmt (parser.c:1248) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid write of size 1 ==30226== at 0x402C6C5: strcpy (mc_replace_strmem.c:438) ==30226== by 0x805CA2E: GetNextToken (scanner.c:296) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x8059C9E: stmt (parser.c:918) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4203101 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x8059C9E: stmt (parser.c:918) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid read of size 1 ==30226== at 0x805DAD3: htFind (symtab.c:78) ==30226== by 0x805E47B: scopeFind (symtab.c:407) ==30226== by 0x805BD72: expr4 (parser.c:1885) ==30226== by 0x805B6EB: expr3 (parser.c:1652) ==30226== by 0x805B484: expr2 (parser.c:1573) ==30226== by 0x805B28F: expr1 (parser.c:1505) ==30226== by 0x805B0F8: expr (parser.c:1444) ==30226== by 0x8059CD0: stmt (parser.c:925) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== Address 0x4203101 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x8059C9E: stmt (parser.c:918) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid read of size 1 ==30226== at 0x402D2EA: strcmp (mc_replace_strmem.c:725) ==30226== by 0x805DB0C: htFind (symtab.c:86) ==30226== by 0x805E47B: scopeFind (symtab.c:407) ==30226== by 0x805BD72: expr4 (parser.c:1885) ==30226== by 0x805B6EB: expr3 (parser.c:1652) ==30226== by 0x805B484: expr2 (parser.c:1573) ==30226== by 0x805B28F: expr1 (parser.c:1505) ==30226== by 0x805B0F8: expr (parser.c:1444) ==30226== by 0x8059CD0: stmt (parser.c:925) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== Address 0x4203101 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x8059C9E: stmt (parser.c:918) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid read of size 1 ==30226== at 0x402C653: strlen (mc_replace_strmem.c:399) ==30226== by 0x804C81B: id (ast.c:56) ==30226== by 0x805BF64: expr4 (parser.c:1934) ==30226== by 0x805B6EB: expr3 (parser.c:1652) ==30226== by 0x805B484: expr2 (parser.c:1573) ==30226== by 0x805B28F: expr1 (parser.c:1505) ==30226== by 0x805B0F8: expr (parser.c:1444) ==30226== by 0x8059CD0: stmt (parser.c:925) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== Address 0x4203101 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x8059C9E: stmt (parser.c:918) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid read of size 1 ==30226== at 0x402C6AD: strcpy (mc_replace_strmem.c:438) ==30226== by 0x804C843: id (ast.c:57) ==30226== by 0x805BF64: expr4 (parser.c:1934) ==30226== by 0x805B6EB: expr3 (parser.c:1652) ==30226== by 0x805B484: expr2 (parser.c:1573) ==30226== by 0x805B28F: expr1 (parser.c:1505) ==30226== by 0x805B0F8: expr (parser.c:1444) ==30226== by 0x8059CD0: stmt (parser.c:925) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== Address 0x4203101 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x8059C9E: stmt (parser.c:918) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid write of size 1 ==30226== at 0x402C6C5: strcpy (mc_replace_strmem.c:438) ==30226== by 0x805CA2E: GetNextToken (scanner.c:296) ==30226== by 0x805B13C: expr (parser.c:1466) ==30226== by 0x8059CD0: stmt (parser.c:925) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4203319 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x805B13C: expr (parser.c:1466) ==30226== by 0x8059CD0: stmt (parser.c:925) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid write of size 1 ==30226== at 0x402C6C5: strcpy (mc_replace_strmem.c:438) ==30226== by 0x805CA2E: GetNextToken (scanner.c:296) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x8059CEA: stmt (parser.c:927) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4203585 is 0 bytes after a block of size 5 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x8059CEA: stmt (parser.c:927) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid write of size 1 ==30226== at 0x402C6C5: strcpy (mc_replace_strmem.c:438) ==30226== by 0x805CA2E: GetNextToken (scanner.c:296) ==30226== by 0x805A186: stmt (parser.c:1031) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x42035bd is 0 bytes after a block of size 5 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x805A186: stmt (parser.c:1031) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid write of size 1 ==30226== at 0x402C6C5: strcpy (mc_replace_strmem.c:438) ==30226== by 0x805CA2E: GetNextToken (scanner.c:296) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x8059B2B: stmt (parser.c:886) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x420377d is 0 bytes after a block of size 5 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x8059B2B: stmt (parser.c:886) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid write of size 1 ==30226== at 0x402C6C5: strcpy (mc_replace_strmem.c:438) ==30226== by 0x805CA2E: GetNextToken (scanner.c:296) ==30226== by 0x8059B0C: stmt (parser.c:883) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4203851 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x8059B0C: stmt (parser.c:883) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid read of size 1 ==30226== at 0x402C6AD: strcpy (mc_replace_strmem.c:438) ==30226== by 0x805A296: stmt (parser.c:1053) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4203b61 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x8059B2B: stmt (parser.c:886) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid write of size 1 ==30226== at 0x402C6C5: strcpy (mc_replace_strmem.c:438) ==30226== by 0x805CA2E: GetNextToken (scanner.c:296) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x805A7FD: stmt (parser.c:1214) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4203c39 is 0 bytes after a block of size 1 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x805A7FD: stmt (parser.c:1214) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Invalid write of size 1 ==30226== at 0x402C6C5: strcpy (mc_replace_strmem.c:438) ==30226== by 0x805CA2E: GetNextToken (scanner.c:296) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x805A1A5: stmt (parser.c:1034) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== Address 0x4203ff3 is 0 bytes after a block of size 3 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x805A1A5: stmt (parser.c:1034) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== Conditional jump or move depends on uninitialised value(s) ==30226== at 0x804894C: convertToBoolean (main.c:33) ==30226== by 0x8049294: interpret (main.c:296) ==30226== by 0x8049A0A: interpret (main.c:430) ==30226== by 0x8049A2D: interpret (main.c:432) ==30226== by 0x804C6D1: main (main.c:1018) ==30226== ==30226== Conditional jump or move depends on uninitialised value(s) ==30226== at 0x8048951: convertToBoolean (main.c:33) ==30226== by 0x8049294: interpret (main.c:296) ==30226== by 0x8049A0A: interpret (main.c:430) ==30226== by 0x8049A2D: interpret (main.c:432) ==30226== by 0x804C6D1: main (main.c:1018) ==30226== ==30226== Invalid read of size 4 ==30226== at 0x80499F6: interpret (main.c:430) ==30226== by 0x804924B: interpret (main.c:297) ==30226== by 0x8049A0A: interpret (main.c:430) ==30226== by 0x8049A2D: interpret (main.c:432) ==30226== by 0x804C6D1: main (main.c:1018) ==30226== Address 0x4204044 is 0 bytes after a block of size 28 alloc'd ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x804C8BB: opr (ast.c:75) ==30226== by 0x805A21D: stmt (parser.c:1042) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== ==30226== HEAP SUMMARY: ==30226== in use at exit: 9,120 bytes in 283 blocks ==30226== total heap usage: 320 allocs, 37 frees, 12,393 bytes allocated ==30226== ==30226== 1 bytes in 1 blocks are definitely lost in loss record 1 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80591C2: type (parser.c:602) ==30226== by 0x805910F: decl (parser.c:579) ==30226== by 0x8058984: decl_list (parser.c:357) ==30226== by 0x8058955: program (parser.c:340) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 1 bytes in 1 blocks are definitely lost in loss record 2 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x805987D: code_block (parser.c:803) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 1 bytes in 1 blocks are definitely lost in loss record 3 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x8059C9E: stmt (parser.c:918) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 1 bytes in 1 blocks are definitely lost in loss record 4 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x805B13C: expr (parser.c:1466) ==30226== by 0x8059CD0: stmt (parser.c:925) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 1 bytes in 1 blocks are definitely lost in loss record 5 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x8059B0C: stmt (parser.c:883) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 1 bytes in 1 blocks are definitely lost in loss record 6 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x805A7FD: stmt (parser.c:1214) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 2 bytes in 1 blocks are definitely lost in loss record 7 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x804C826: id (ast.c:56) ==30226== by 0x805AA54: stmt (parser.c:1268) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 2 bytes in 1 blocks are definitely lost in loss record 8 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x804C859: id (ast.c:58) ==30226== by 0x805AA54: stmt (parser.c:1268) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 2 bytes in 1 blocks are definitely lost in loss record 9 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x804C826: id (ast.c:56) ==30226== by 0x805BF64: expr4 (parser.c:1934) ==30226== by 0x805B6EB: expr3 (parser.c:1652) ==30226== by 0x805B484: expr2 (parser.c:1573) ==30226== by 0x805B28F: expr1 (parser.c:1505) ==30226== by 0x805B0F8: expr (parser.c:1444) ==30226== by 0x8059CD0: stmt (parser.c:925) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== ==30226== 2 bytes in 1 blocks are definitely lost in loss record 10 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x804C859: id (ast.c:58) ==30226== by 0x805BF64: expr4 (parser.c:1934) ==30226== by 0x805B6EB: expr3 (parser.c:1652) ==30226== by 0x805B484: expr2 (parser.c:1573) ==30226== by 0x805B28F: expr1 (parser.c:1505) ==30226== by 0x805B0F8: expr (parser.c:1444) ==30226== by 0x8059CD0: stmt (parser.c:925) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== ==30226== 2 bytes in 1 blocks are definitely lost in loss record 11 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x804C826: id (ast.c:56) ==30226== by 0x805BF64: expr4 (parser.c:1934) ==30226== by 0x805B6EB: expr3 (parser.c:1652) ==30226== by 0x805B484: expr2 (parser.c:1573) ==30226== by 0x805B28F: expr1 (parser.c:1505) ==30226== by 0x805B141: expr (parser.c:1468) ==30226== by 0x8059CD0: stmt (parser.c:925) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== ==30226== 2 bytes in 1 blocks are definitely lost in loss record 12 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x804C859: id (ast.c:58) ==30226== by 0x805BF64: expr4 (parser.c:1934) ==30226== by 0x805B6EB: expr3 (parser.c:1652) ==30226== by 0x805B484: expr2 (parser.c:1573) ==30226== by 0x805B28F: expr1 (parser.c:1505) ==30226== by 0x805B141: expr (parser.c:1468) ==30226== by 0x8059CD0: stmt (parser.c:925) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== ==30226== 2 bytes in 1 blocks are definitely lost in loss record 13 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x804C826: id (ast.c:56) ==30226== by 0x805BF64: expr4 (parser.c:1934) ==30226== by 0x805B6EB: expr3 (parser.c:1652) ==30226== by 0x805B484: expr2 (parser.c:1573) ==30226== by 0x805B28F: expr1 (parser.c:1505) ==30226== by 0x805B0F8: expr (parser.c:1444) ==30226== by 0x8059B11: stmt (parser.c:884) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== ==30226== 2 bytes in 1 blocks are definitely lost in loss record 14 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x804C859: id (ast.c:58) ==30226== by 0x805BF64: expr4 (parser.c:1934) ==30226== by 0x805B6EB: expr3 (parser.c:1652) ==30226== by 0x805B484: expr2 (parser.c:1573) ==30226== by 0x805B28F: expr1 (parser.c:1505) ==30226== by 0x805B0F8: expr (parser.c:1444) ==30226== by 0x8059B11: stmt (parser.c:884) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== ==30226== 2 bytes in 1 blocks are definitely lost in loss record 15 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x804C826: id (ast.c:56) ==30226== by 0x805BF64: expr4 (parser.c:1934) ==30226== by 0x805B6EB: expr3 (parser.c:1652) ==30226== by 0x805B484: expr2 (parser.c:1573) ==30226== by 0x805B28F: expr1 (parser.c:1505) ==30226== by 0x805B0F8: expr (parser.c:1444) ==30226== by 0x805A8AB: stmt (parser.c:1233) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== ==30226== 2 bytes in 1 blocks are definitely lost in loss record 16 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x804C859: id (ast.c:58) ==30226== by 0x805BF64: expr4 (parser.c:1934) ==30226== by 0x805B6EB: expr3 (parser.c:1652) ==30226== by 0x805B484: expr2 (parser.c:1573) ==30226== by 0x805B28F: expr1 (parser.c:1505) ==30226== by 0x805B0F8: expr (parser.c:1444) ==30226== by 0x805A8AB: stmt (parser.c:1233) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== ==30226== 2 bytes in 1 blocks are definitely lost in loss record 17 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x804C826: id (ast.c:56) ==30226== by 0x805AA54: stmt (parser.c:1268) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 2 bytes in 1 blocks are definitely lost in loss record 18 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x804C859: id (ast.c:58) ==30226== by 0x805AA54: stmt (parser.c:1268) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 3 bytes in 1 blocks are definitely lost in loss record 19 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80584C9: Parse (parser.c:107) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 3 bytes in 1 blocks are definitely lost in loss record 20 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x805A941: stmt (parser.c:1248) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 3 bytes in 1 blocks are definitely lost in loss record 21 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x805A1A5: stmt (parser.c:1034) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 5 bytes in 1 blocks are definitely lost in loss record 22 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x8059136: decl (parser.c:583) ==30226== by 0x8058984: decl_list (parser.c:357) ==30226== by 0x8058955: program (parser.c:340) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 5 bytes in 1 blocks are definitely lost in loss record 23 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x805A941: stmt (parser.c:1248) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 5 bytes in 1 blocks are definitely lost in loss record 24 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x8059CEA: stmt (parser.c:927) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 5 bytes in 1 blocks are definitely lost in loss record 25 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x805A186: stmt (parser.c:1031) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 7 bytes in 2 blocks are definitely lost in loss record 26 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805CE4D: GetNextToken (scanner.c:472) ==30226== by 0x8059B0C: stmt (parser.c:883) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 7 bytes in 2 blocks are definitely lost in loss record 27 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805B9C6: expr4 (parser.c:1765) ==30226== by 0x805B6EB: expr3 (parser.c:1652) ==30226== by 0x805B484: expr2 (parser.c:1573) ==30226== by 0x805B28F: expr1 (parser.c:1505) ==30226== by 0x805B0F8: expr (parser.c:1444) ==30226== by 0x8059B11: stmt (parser.c:884) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== ==30226== 11 bytes in 3 blocks are definitely lost in loss record 28 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805C9FB: GetNextToken (scanner.c:294) ==30226== by 0x80585BB: match (parser.c:169) ==30226== by 0x8059B2B: stmt (parser.c:886) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x805A18B: stmt (parser.c:1032) ==30226== by 0x8059D59: stmt (parser.c:942) ==30226== by 0x80599C3: stmt_list (parser.c:846) ==30226== by 0x80598B8: code_block (parser.c:810) ==30226== by 0x8058965: program (parser.c:343) ==30226== by 0x80584D9: Parse (parser.c:112) ==30226== by 0x804C65F: main (main.c:995) ==30226== ==30226== 9,036 bytes in 251 blocks are definitely lost in loss record 29 of 29 ==30226== at 0x402BE41: malloc (vg_replace_malloc.c:270) ==30226== by 0x805E225: scopeInit (symtab.c:317) ==30226== by 0x804C62E: main (main.c:992) ==30226== ==30226== LEAK SUMMARY: ==30226== definitely lost: 9,120 bytes in 283 blocks ==30226== indirectly lost: 0 bytes in 0 blocks ==30226== possibly lost: 0 bytes in 0 blocks ==30226== still reachable: 0 bytes in 0 blocks ==30226== suppressed: 0 bytes in 0 blocks ==30226== ==30226== For counts of detected and suppressed errors, rerun with: -v ==30226== Use --track-origins=yes to see where uninitialised values come from ==30226== ERROR SUMMARY: 90 errors from 59 contexts (suppressed: 0 from 0) |
|
|
|
|
|
#19 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Il problema è nel file "mc_replace_strmem.c" o in uno dei miei file?
scanner.c:
Ultima modifica di Vincenzo1968 : 04-01-2013 alle 17:32. |
|
|
|
|
|
#20 | |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Il manuale dice che il problema si verifica nel file indicato nella prima riga dopo "Invalid write of size 1"
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:07.






























