Caros,
Estou criando uma extensão para nosso grande banco de dados, Postgres,
mas estou tendo problemas.

Na verdade ela ja´está pronta e funciona perfeitamente no linux
(ubuntu + postgres). O problema é que quando fui gerar a versão para
Rwindows está dando erro de acesso violado. O código é exatamente o
mesmo, sem alterar uma linha que seja. Compila sem problemas, mas na
hora de executar junto com o postgres dá erro!

Estou usando o postgres 8.3.9; Rwindows XP SP3; Eclipse + MinGW 5.1.6
(compilador).

Eis os log:

No eclipse (compilação sem problemas):

**** Rebuild of configuration Release for project postmind ****

**** Internal Builder is used for build               ****
gcc -IC:\pgSQL\include -IC:\Arquivos de programas\GnuWin32\include
-IC:\pgSQL\include\server -IC:\pgSQL\include\server\port\win32 -O3
-Wall -c -fmessage-length=0 -osrc\mind\geneticalMind.o
..\src\mind\geneticalMind.c
gcc -IC:\pgSQL\include -IC:\Arquivos de programas\GnuWin32\include
-IC:\pgSQL\include\server -IC:\pgSQL\include\server\port\win32 -O3
-Wall -c -fmessage-length=0 -osrc\genesis\allocator\allocator.o
..\src\genesis\allocator\allocator.c
gcc -IC:\pgSQL\include -IC:\Arquivos de programas\GnuWin32\include
-IC:\pgSQL\include\server -IC:\pgSQL\include\server\port\win32 -O3
-Wall -c -fmessage-length=0 -osrc\genesis\darvin.o
..\src\genesis\darvin.c
gcc -LC:\pgSQL\lib -shared -olibpostmind.dll src\mind\geneticalMind.o
src\genesis\darvin.o src\genesis\allocator\allocator.o -lpostgres
Build complete for project postmind
Time consumed: 984  ms.


Ao executar a função via postgres dá erro:

LOG:  processo servidor (PID 10100) foi terminado pela exceção 0xC0000005
DICA:  Veja o arquivo de cabeçalho C "ntstatus.h" para obter uma
descrição do valor hexadecimal.
LOG:  terminando quaisquer outros processos servidor ativos
WARNING:  terminating connection because of crash of another server process
DETAIL:  The postmaster has commanded this server process to roll back
the current transaction and exit, because another server process
exited abnormally and possibly corrupted shared memory.
HINT:  In a moment you should be able to reconnect to the database and
repeat your command.
WARNING:  terminating connection because of crash of another server process
DETAIL:  The postmaster has commanded this server process to roll back
the current transaction and exit, because another server process
exited abnormally and possibly corrupted shared memory.
HINT:  In a moment you should be able to reconnect to the database and
repeat your command.
LOG:  todos os processos servidor foram terminados; reinicializando
LOG:  database system was interrupted; last known up at 2010-01-21 13:56:05 GMT
LOG:  database system was not properly shut down; automatic recovery in progress

LOG:  redo starts at 0/818522C0
LOG:  record with zero length at 0/81859A18
LOG:  redo done at 0/818599E8
LOG:  last completed transaction was at log time 2010-01-21 18:31:27.582+00
LOG:  autovacuum launcher started
LOG:  sistema de banco de dados está pronto para aceitar conexões
-------------------

0xC0000005 é erro de acesso violado, como se houvesse uma tentativa de
acessar um ponteiro nulo.
Certamente o código da função está correto, pois funciona no ubuntu,
esse erro só acontece no windows e em tempo de execução.

Minhas suspeitas:
1 - No ubuntu, a instalação do postgres foi feita via código fonte,
baixado, compilado e instalado, com isso ao compilar minha extensão no
ubuntu "eles se entendem melhor";
2 - No windows a versão foi baixada com os binários (apenas
executáveis sem instalação). Em tese isso não era pra ser problema.
3 - Gerenciamento de memória ridículo no Rwindows!!! Essa é certeza!!!

Alguém já passou por isso ou tem alguma dica.

Grato.
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a