Ubuntu 32 X 64 bits

1. Ubuntu 32 X 64 bits

Carlos Jones Rebello Junior
rebello78

(usa Ubuntu)

Enviado em 28/08/2012 - 10:40h

Pessoal estou com um problema em um programa em c que implementei. O programa funciona perfeitamente sem nenhum erro de alocação dinâmica nem nada, só que estou rodando no Ubuntu 12.04 32 bits, quando eu levo este mesmo programa para o ubuntu 12.04 64 bits ele compila mas na hora de rodar apresenta o seguinte erro:"Falha de segmentação (imagem do núcleo gravada)".

Tenho a impressão de que na plataforma 64bits ele considera o tamanho do inteiro diferente tipo para 32 bits 4B para 64 bits 8B, mesmo assim, não deveria haver erros pois quando aloco dinamicamente eu uso sizeof(int).

usando o valgrind no 64 bits ele acusa erro exatamente na alocação dinâmica... alguém pode dar uma luz.... vlw.


  


2. Re: Ubuntu 32 X 64 bits

Paulo
paulo1205

(usa Ubuntu)

Enviado em 28/08/2012 - 11:45h

Sem ver o código fica difícil até de imaginar uma causa provável.

Você compilou todo o source do zero quando mudou de plataforma, ou reaproveitou algum que já tivesse sido compilado em 32 bits?

Compile com o flag "-g" (isso vai levar símbolos de depuração para dentro do executável). Aí você executa o programa com o gdb, para que quando der erro você tenha melhores elementos para dizer onde e por quê.


3. Re: Ubuntu 32 X 64 bits

Carlos Jones Rebello Junior
rebello78

(usa Ubuntu)

Enviado em 28/08/2012 - 12:28h

Eu compilo direto com o makefile, logo compilo todo o código

all:
gcc -c pqa.c
gcc -c headQ.c
gcc -c lista.c
gcc -Wall -lm -O1 -g -o main main.c pqa.o headQ.o lista.o


Percebi agora que se eu usar o valgrind apesar dos erros ele roda e dá a resposta certa só que mostra os erros...

Se rodar sem o valgrind dá a mensagem já citada acima...

No fim do arquivo de erros mostra uma linha escrita "Solucao" que é a solução do meu problema.

Se rodar no 32 bits dá a mesma reposta sem os erros. Pelo relatório de erros abaixo dá pra ver que o problema é na alocação o que é estranho que no de 32bits aloca sem problemas.

==3605== Memcheck, a memory error detector
==3605== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==3605== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==3605== Command: ./main chr12a.dat
==3605==
==3605== Invalid write of size 8
==3605== at 0x401055: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40118D: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605== Address 0x51ef570 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40118D: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605== Invalid read of size 8
==3605== at 0x401065: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40118D: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605== Address 0x51ef570 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40118D: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605== Invalid read of size 8
==3605== at 0x4011AB: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605== Address 0x51ef570 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40118D: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605== Invalid write of size 8
==3605== at 0x401055: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401261: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605== Address 0x51faf20 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401261: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605== Invalid read of size 8
==3605== at 0x401065: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401261: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605== Address 0x51faf20 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401261: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605== Invalid read of size 8
==3605== at 0x40127F: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605== Address 0x51faf20 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401261: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605== Invalid write of size 8
==3605== at 0x401055: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401C72: construirHeadQ (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400833: main (main.c:45)
==3605== Address 0x52069e0 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401C72: construirHeadQ (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400833: main (main.c:45)
==3605==
==3605== Invalid read of size 8
==3605== at 0x401065: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401C72: construirHeadQ (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400833: main (main.c:45)
==3605== Address 0x52069e0 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401C72: construirHeadQ (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400833: main (main.c:45)
==3605==
==3605== Invalid read of size 8
==3605== at 0x401D05: construirHeadQ (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400833: main (main.c:45)
==3605== Address 0x52069e0 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401C72: construirHeadQ (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400833: main (main.c:45)
==3605==
==3605== Invalid read of size 8
==3605== at 0x401CD4: construirHeadQ (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400833: main (main.c:45)
==3605== Address 0x52069e0 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401C72: construirHeadQ (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400833: main (main.c:45)
==3605==
==3605== Invalid read of size 8
==3605== at 0x400E96: preencherVetor (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400866: main (main.c:55)
==3605== Address 0x51faf20 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401261: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605== Invalid read of size 8
==3605== at 0x400E96: preencherVetor (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400931: main (main.c:66)
==3605== Address 0x51ef570 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40118D: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605== Invalid read of size 8
==3605== at 0x400F9B: liberarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400A0D: main (main.c:86)
==3605== Address 0x52069e0 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401C72: construirHeadQ (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400833: main (main.c:45)
==3605==
==3605== Invalid read of size 8
==3605== at 0x401A89: calcularCusto (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x4019B1: gerarFiOtimizada (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400A4D: main (main.c:98)
==3605== Address 0x51ef570 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40118D: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605== Invalid read of size 8
==3605== at 0x401ABE: calcularCusto (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x4019B1: gerarFiOtimizada (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400A4D: main (main.c:98)
==3605== Address 0x51faf20 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401261: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605== Invalid read of size 8
==3605== at 0x401ABE: calcularCusto (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401573: _2_Troca (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400A5A: main (main.c:102)
==3605== Address 0x51faf48 is not stack'd, malloc'd or (recently) free'd
==3605==
==3605== Invalid read of size 8
==3605== at 0x401A89: calcularCusto (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401573: _2_Troca (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400A5A: main (main.c:102)
==3605== Address 0x51ef570 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40118D: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605== Invalid read of size 8
==3605== at 0x401ABE: calcularCusto (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401645: _2_Troca (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400A5A: main (main.c:102)
==3605== Address 0x51faf48 is not stack'd, malloc'd or (recently) free'd
==3605==
==3605== Invalid read of size 8
==3605== at 0x401A89: calcularCusto (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401645: _2_Troca (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400A5A: main (main.c:102)
==3605== Address 0x51ef570 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40118D: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605== Invalid read of size 8
==3605== at 0x401ABE: calcularCusto (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401573: _2_Troca (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400AA2: main (main.c:111)
==3605== Address 0x51faf28 is 8 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401261: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605== Invalid read of size 8
==3605== at 0x401A89: calcularCusto (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401573: _2_Troca (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400AA2: main (main.c:111)
==3605== Address 0x51ef570 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40118D: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605== Invalid read of size 8
==3605== at 0x401ABE: calcularCusto (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x4016E2: _2_Troca (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400AA2: main (main.c:111)
==3605== Address 0x51faf28 is 8 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x401261: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605== Invalid read of size 8
==3605== at 0x401A89: calcularCusto (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x4016E2: _2_Troca (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400AA2: main (main.c:111)
==3605== Address 0x51ef570 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40118D: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605== Invalid read of size 8
==3605== at 0x401ABE: calcularCusto (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x4013E1: calcularProfundidade (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40177C: _2_Troca (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400AA2: main (main.c:111)
==3605== Address 0x51faf40 is not stack'd, malloc'd or (recently) free'd
==3605==
==3605== Invalid read of size 8
==3605== at 0x401A89: calcularCusto (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x4013E1: calcularProfundidade (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40177C: _2_Troca (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400AA2: main (main.c:111)
==3605== Address 0x51ef570 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40118D: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605== Invalid read of size 8
==3605== at 0x401ABE: calcularCusto (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x4013E1: calcularProfundidade (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40146F: calcularProfundidade (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40177C: _2_Troca (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400AA2: main (main.c:111)
==3605== Address 0x51faf40 is not stack'd, malloc'd or (recently) free'd
==3605==
==3605== Invalid read of size 8
==3605== at 0x401A89: calcularCusto (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x4013E1: calcularProfundidade (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40146F: calcularProfundidade (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40177C: _2_Troca (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400AA2: main (main.c:111)
==3605== Address 0x51ef570 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40118D: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605== Invalid read of size 8
==3605== at 0x401ABE: calcularCusto (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x4013E1: calcularProfundidade (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40146F: calcularProfundidade (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40146F: calcularProfundidade (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40177C: _2_Troca (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400AA2: main (main.c:111)
==3605== Address 0x51faf40 is not stack'd, malloc'd or (recently) free'd
==3605==
==3605== Invalid read of size 8
==3605== at 0x401A89: calcularCusto (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x4013E1: calcularProfundidade (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40146F: calcularProfundidade (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40146F: calcularProfundidade (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40177C: _2_Troca (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400AA2: main (main.c:111)
==3605== Address 0x51ef570 is 0 bytes after a block of size 48 alloc'd
==3605== at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==3605== by 0x401005: alocarMatrizInt (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x40118D: copiarArq (in /home/jones/Dropbox/2012/ufes_mestrado/2012-1/Estudo Dirigido 2/implementacao/headQ/bkpGraspPQA/19-07-12/main)
==3605== by 0x400829: main (main.c:38)
==3605==
==3605==
==3605== More than 10000000 total errors detected. I'm not reporting any more.
==3605== Final error counts will be inaccurate. Go fix your program!
==3605== Rerun with --error-limit=no to disable this cutoff. Note
==3605== that errors may occur in your program without prior warning from
==3605== Valgrind, because errors are no longer being displayed.
==3605==
Menor Custo: 9552.00
Solucao: 7 5 12 2 1 3 9 11 10 6 8 4


==3605==
==3605== HEAP SUMMARY:
==3605== in use at exit: 0 bytes in 0 blocks
==3605== total heap usage: 6,365 allocs, 6,365 frees, 351,184 bytes allocated
==3605==
==3605== All heap blocks were freed -- no leaks are possible
==3605==
==3605== For counts of detected and suppressed errors, rerun with: -v
==3605== ERROR SUMMARY: 10000000 errors from 29 contexts (suppressed: 2 from 2)



4. Re: Ubuntu 32 X 64 bits

Carlos Jones Rebello Junior
rebello78

(usa Ubuntu)

Enviado em 28/08/2012 - 12:40h

Acho que sei qual é o problema. Estou desconfiado que instalei o versão para amd do linux 64bits e meu processador é intel, vou verificar isso, já estava desconfiado agora vi uma linha daquela mensagem de erro postada acima e percebi que pode ser isso.


5. Re: Ubuntu 32 X 64 bits

Paulo
paulo1205

(usa Ubuntu)

Enviado em 28/08/2012 - 13:43h

Não existe isso de Linux para Intel ser diferente de Linux para AMD (a não que se esteja falando do Intel Itanium). O que ocorre é que algumas pessoas e instituições chamam (com toda a justiça, aliás) a plataforma de 64 bits definida pela AMD (que mantinha compatibilidade com processadores anteriores não só de 32 bits, mas também de 16 bits) de "amd64".

Nessa época, a Intel fez pouco caso e apostou no Itanium, designado como "ia64" (de Intel Architecture), mesmo com a resistência do mercado de aceitar um processador que não mantinha a compatibilidade com aplicações já existentes. Mas quando ela viu que a AMD estava abocanhando o mercado e que o Itanium tinha virado um produto de nicho, foi a sua vez de copiar a concorrente, lançando extensões de 64 bits para seus Pentiums, sem fazer qualquer menção ao fato de que tais extensões eram uma cópia daquilo de que zombara. E ainda pressionou o mercado para não adotar o nome do concorrente para a arquitetura, mas sim o seu próprio nome de marketing "EMT64".

Felizmente a designação "emt64" não colou para designar software escrito para a plataforma em questão, mas sim a supostamente neutra "x86_64". Mas eu entendo que essa neutralidade acaba agindo em favor da Intel -- quando eram os outros (AMD, Cyrix, VIA) que a copiavam, ninguém achava politicamente incorreto designar a arquitetura como "i386", "i486", "i586", "i686" ou, já no finzinho daquela época, para significar o núcleo comum entre essas quatro, "ix86".


Voltando, porém, ao tema original, se o valgrind está falando que você está com problemas de alocação, o que você está esperando para corrigi-los?


6. Re: Ubuntu 32 X 64 bits

Carlos Jones Rebello Junior
rebello78

(usa Ubuntu)

Enviado em 28/08/2012 - 15:24h

Então Paulo obrigado pelo esclarecimento, eu entrei até no tópico para me corrigir pois acabei de ler algo semelhante ao que postou.

Voltando ao problema, acho estranho que o valgrind não acusa na plataforma 32bits só na de 64, eu já descobri que o problema está em uma função para alocar um matriz de inteiros. Alocar apenas um vetor não dá zebra, fiz uma função bem simples separada só para ver se era esse mesmo o problema e vi que sim, vou tentar acertar e logo dou um retorno.

Vlw cara grande abraço.


7. Re: Ubuntu 32 X 64 bits

Paulo
paulo1205

(usa Ubuntu)

Enviado em 28/08/2012 - 16:42h

Você poderia postar o código. Se não quiser postar tudo, mostre pelo menos como está fazendo a alocação, junto como uma descrição do que esperava que ocorresse.


8. Re: Ubuntu 32 X 64 bits

Carlos Jones Rebello Junior
rebello78

(usa Ubuntu)

Enviado em 28/08/2012 - 18:00h

Hehehehe estava preparando o pedaço do código justamente antes de vc postar, o programa não faz nada de excepcional, apenas imprime, ou deveria imprimir, um vetor e uma matriz alocados dinamicamente, lembrando que a liberação da memória não me interessa nesse momento, aqui compilou e apresentou o vetor na matriz da velha mensagem "Falha de segmentação (imagem do núcleo gravada)", segue ai:

#include <stdio.h>
#include <stdlib.h>

int **alocarMatrizInt (int m, int n);
void imprimirMatriz(int **mat, int lin, int col);

int main(int argc, char *argv[])
{
int *p, i, j;
int **pp;
int n=10;

p = (int*) calloc (n, sizeof(int));

pp = alocarMatrizInt (n,n);

for(i=0;i<n;i++)
{
p[i]=i+1;
}

for(i=0;i<n;i++)
{
printf("%d ",p[i]);
}

printf("\n");

for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
pp[i][j]=i+j;
}
}

imprimirMatriz(pp,n,n);

return 0;
}

int** alocarMatrizInt (int m, int n)
{
int **v; // ponteiro para a matriz
int i; // variavel auxiliar

// verifica parametros recebidos pois uma matriz nao pode ter dimensão 0
if ((m < 1) || (n < 1))
{
printf ("** Erro: Parametro invalido, uma matriz nao pode ter dimensao 0 **\n");
return (NULL);
}

// aloca as linhas da matriz
v = (int **) calloc (m, sizeof(int)); // Um vetor de m ponteiros para int

if (v == NULL)
{
printf ("** Erro: Memoria Insuficiente **");
return (NULL);
}

// aloca as colunas da matriz
for (i=0;i<m;i++)
{
v[i] = (int*) calloc (n, sizeof(int)); // m vetores de n ints

if (v[i] == NULL)
{
printf ("** Erro: Memoria Insuficiente **");
return (NULL);
}
}
return (v); // retorna o ponteiro para a matriz
}


// imprime uma matriz de entrada de dados
void imprimirMatriz(int **mat, int lin, int col)
{
int i,j; // controle de linhas e colunas

// exibe a matriz de entrada
for(i=0;i<lin;i++)
{
for(j=0;j<col;j++)
{
printf("\t%i",mat[i][j]);
}
printf("\n");
}
}


9. Re: Ubuntu 32 X 64 bits

Carlos Jones Rebello Junior
rebello78

(usa Ubuntu)

Enviado em 28/08/2012 - 18:56h

Resolvido....................

Paulo o que faltou foi um *... fala sério e essa função sempre usei com 32 bits e nunca me deixou na mão... na linha:


// aloca as linhas da matriz
v = (int **) calloc (m, sizeof(int)); // Um vetor de m ponteiros para int

faltou um * no int do sizeof, ficaria assim:


// aloca as linhas da matriz
v = (int **) calloc (m, sizeof(int*)); // Um vetor de m ponteiros para int

valeu pela força camarada.... fica ai como aprendizado, pq eu tinha usado essa função que achei na net e apenas adequei a minha demanda e hj percebi em 2 ou 3 lugares que havia esse erro inclusive em um fórum daqui do site estava com o mesmo erro... porém alguém fez um comentário em linhas gerais que acabou me ajudando segue o link do qual estou falando....

http://www.vivaolinux.com.br/artigo/Alocacao-dinamica-de-memoria-em-C?pagina=2

valeu pela força galera.................







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts