On Tue, Dec 22, 2009 at 8:49 PM, Heikki Linnakangas <heikki.linnakan...@enterprisedb.com> wrote: >> Umm.., I still cannot find the place where the walreceiver module is >> loaded by using load_external_function() in your 'replication' branch. >> Also the compilation of that branch fails. Is the 'pushed' branch the >> latest? Sorry if I'm missing something. > > Ah, I see. The changes were not included in the merge commit after all, > but I had simple forgot to "git add" them. Sorry about that, should be > there now.
This change which moves walreceiver process into a dynamically loaded module caused the following compile error on my MinGW environment. --------------------------- gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -fwrapv -g -I. -I../../../../src/interfaces/libpq -I../../../../src/include -I./src/include/port/win32 -DEXEC_BACKEND "-I../../../../src/include/port/win32" -DBUILDING_DLL -c -o walreceiverproc.o walreceiverproc.c dlltool --export-all --output-def libwalreceiverprocdll.def walreceiverproc.o dllwrap -o walreceiverproc.dll --dllname walreceiverproc.dll --def libwalreceiverprocdll.def walreceiverproc.o -L../../../../src/backend -lpostgres -L../../../../src/interfaces/libpq -L../../../../src/port -lpq Info: resolving _pg_signal_mask by linking to __imp__pg_signal_mask (auto-import) Info: resolving _pg_signal_queue by linking to __imp__pg_signal_queue (auto-import) Info: resolving _InterruptPending by linking to __imp__InterruptPending (auto-import) Info: resolving _assert_enabled by linking to __imp__assert_enabled (auto-import) Info: resolving _WalRcv by linking to __imp__WalRcv (auto-import) Info: resolving _proc_exit_inprogress by linking to __imp__proc_exit_inprogress (auto-import) Info: resolving _BlockSig by linking to __imp__BlockSig (auto-import) Info: resolving _sync_method by linking to __imp__sync_method (auto-import) Info: resolving _MyProcPid by linking to __imp__MyProcPid (auto-import) Info: resolving _CurrentResourceOwner by linking to __imp__CurrentResourceOwner (auto-import) Info: resolving _TopMemoryContext by linking to __imp__TopMemoryContext (auto-import) Info: resolving _CurrentMemoryContext by linking to __imp__CurrentMemoryContext (auto-import) Info: resolving _PG_exception_stack by linking to __imp__PG_exception_stack (auto-import) Info: resolving _UnBlockSig by linking to __imp__UnBlockSig (auto-import) Info: resolving _ThisTimeLineID by linking to __imp__ThisTimeLineID (auto-import) Info: resolving _error_context_stack by linking to __imp__error_context_stack (auto-import) Info: resolving _InterruptHoldoffCount by linking to __imp__InterruptHoldoffCount (auto-import) c:\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: warning: auto-importing has been activated without --enable-auto-import specified on the command line. This should work unless it involves constant data structures referencing symbols from auto-imported DLLs. fu000001.o:(.idata$2+0xc): undefined reference to `libpostgres_a_iname' fu000003.o:(.idata$2+0xc): undefined reference to `libpostgres_a_iname' fu000005.o:(.idata$2+0xc): undefined reference to `libpostgres_a_iname' fu000006.o:(.idata$2+0xc): undefined reference to `libpostgres_a_iname' fu000008.o:(.idata$2+0xc): undefined reference to `libpostgres_a_iname' fu000009.o:(.idata$2+0xc): more undefined references to `libpostgres_a_iname' follow nmth000000.o:(.idata$4+0x0): undefined reference to `_nm__pg_signal_mask' nmth000002.o:(.idata$4+0x0): undefined reference to `_nm__pg_signal_queue' nmth000004.o:(.idata$4+0x0): undefined reference to `_nm__InterruptPending' nmth000007.o:(.idata$4+0x0): undefined reference to `_nm__assert_enabled' nmth000012.o:(.idata$4+0x0): undefined reference to `_nm__WalRcv' nmth000018.o:(.idata$4+0x0): undefined reference to `_nm__proc_exit_inprogress' nmth000020.o:(.idata$4+0x0): undefined reference to `_nm__BlockSig' nmth000023.o:(.idata$4+0x0): undefined reference to `_nm__sync_method' nmth000026.o:(.idata$4+0x0): undefined reference to `_nm__MyProcPid' nmth000028.o:(.idata$4+0x0): undefined reference to `_nm__CurrentResourceOwner' nmth000030.o:(.idata$4+0x0): undefined reference to `_nm__TopMemoryContext' nmth000032.o:(.idata$4+0x0): undefined reference to `_nm__CurrentMemoryContext' nmth000035.o:(.idata$4+0x0): undefined reference to `_nm__PG_exception_stack' nmth000037.o:(.idata$4+0x0): undefined reference to `_nm__UnBlockSig' nmth000039.o:(.idata$4+0x0): undefined reference to `_nm__ThisTimeLineID' nmth000041.o:(.idata$4+0x0): undefined reference to `_nm__error_context_stack' nmth000043.o:(.idata$4+0x0): undefined reference to `_nm__InterruptHoldoffCount' collect2: ld returned 1 exit status c:\MinGW\bin\dllwrap.exe: c:\MinGW\bin\gcc exited with status 1 make[2]: *** [walreceiverproc.dll] Error 1 make[2]: Leaving directory `/c/postgres/mmm/src/backend/postmaster/walreceiverproc' make[1]: *** [all] Error 2 make[1]: Leaving directory `/c/postgres/mmm/src' make: *** [all] Error 2 --------------------------- Though I marked the variables shown in the above message as PGDLLIMPORT, the "make" still fails in the same way. I struggled with this issue for some time, but could not fix it yet :( Frankly I'm not familiar with that area. So it would be nice if someone could analyze this issue. Regards, -- Fujii Masao NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers