yes, I build it by myself, and the version is 9.1.2, following is my build process. 1. in Visual Studio 2008 x64 cmd, exec "set CONFIG=DEBUG" 2. exec "build" , and i see "Detected hardware platform: x64" 3. exec "perl install.pl install2 Debug" 4. cd ****/install2 5. initdb a data dir, "initdb.exe -Atrust -USYSTEM --no-locale -D ../data" 6. startup postgres ""postgres" -D "../data" -c shared_buffers=1073741819" above is my build process, and whether one of these steps incorrect ? here is stack info postgres.exe!my_log2(long num=1073741835) 行1397 + 0x1e 字节 C postgres.exe!hash_estimate_size(long num_entries=1073741835, unsigned __int64 entrysize=24) 行626 + 0x9 字节 C postgres.exe!BufTableShmemSize(int size=1073741835) 行46 C postgres.exe!StrategyShmemSize() 行287 + 0xe 字节 C postgres.exe!BufferShmemSize() 行175 + 0x5 字节 C postgres.exe!CreateSharedMemoryAndSemaphores(char makePrivate=0, int port=5432) 行107 + 0x5 字节 C postgres.exe!reset_shared(int port=5432) 行2122 C postgres.exe!PostmasterMain(int argc=5, char * * argv=0x0000000000873590) 行971 C postgres.exe!main(int argc=5, char * * argv=0x0000000000873590) 行199 + 0xe 字节 C
best wishes At 2012-02-18 06:27:04,"Tom Lane" <t...@sss.pgh.pa.us> wrote: >zoulx1...@163.com writes: >> I startup postgres in win server 2008 64-bit with >> shared_buffers=1073741819, but find it doesn't work. > >Well, that's hardly the fault of my_log2. What you should have gotten >is > >FATAL: requested shared memory size overflows size_t > >and I do get that when I try that value. Apparently the overflow check >in mul_size() is broken in your build. Did you build it yourself, and >if so with which compiler and what compilation options? If you didn't >build it yourself, where did you get it from? > >> size_t in win64 is 8 bytes, so add_size and mul_size can't check overflow, > >Sure they can. Or at least if they can't, it's not because of size_t >being 8 bytes. That code works fine on every other 64-bit platform. > > regards, tom lane