Thread

  1. Re: [PATCH] Add native windows on arm64 support

    Dave Cramer <davecramer@postgres.rocks> — 2024-02-09T20:32:10Z

    On Fri, 9 Feb 2024 at 14:36, Andres Freund <andres@anarazel.de> wrote:
    
    > Hi,
    >
    > On 2024-02-09 14:23:46 -0500, Dave Cramer wrote:
    > > > interestingly meson test does not produce any error
    > > > The buildfarm produces the following error for me:
    > > >
    > > > -SELECT relname, attname, coltypes, get_columns_length(coltypes)
    > > > - FROM check_columns
    > > > - WHERE get_columns_length(coltypes) % 8 != 0 OR
    > > > -       'name'::regtype::oid = ANY(coltypes);
    > > > - relname | attname | coltypes | get_columns_length
    > > > ----------+---------+----------+--------------------
    > > > -(0 rows)
    > > > -
    > > > +server closed the connection unexpectedly
    > > > + This probably means the server terminated abnormally
    > > > + before or while processing the request.
    > > > +connection to server was lost
    > > >
    > >
    > > Actually digging some more, here is the actual error
    > >
    > > 2024-02-09 13:31:11.008 -05 postmaster[10672] LOG:  server process (PID
    > > 11204) was terminated by exception 0xC0000005
    > > 2024-02-09 13:31:11.008 -05 postmaster[10672] DETAIL:  Failed process was
    > > running: VACUUM;
    > > 2024-02-09 13:31:11.008 -05 postmaster[10672] HINT:  See C include file
    > > "ntstatus.h" for a description of the hexadecimal value.
    >
    > That's something like a segfault.
    >
    > One suspicion I have is that src/port/pg_crc32c_armv8_choose.c possibly
    > doesn't properly support msvc.  It seems to assume that SIGILL can be
    > trapped,
    > but that IIRC doesn't work on windows.
    >
    > I'd check if the problem persists if you change
    > cdata.set('USE_ARMV8_CRC32C_WITH_RUNTIME_CHECK', 1)
    > to
    > cdata.set('USE_ARMV8_CRC32C_WITH_RUNTIME_CHECK', 0)
    >
    
    This results in
    
    FAILED: src/bin/pg_checksums/pg_checksums.exe
    src/bin/pg_checksums/pg_checksums.pdb
    "link"  /MACHINE:ARM64 /OUT:src/bin/pg_checksums/pg_checksums.exe
    src/bin/pg_checksums/pg_checksums.exe.p/win32ver.res
    src/bin/pg_checksums/pg_checksums.exe.p/pg_checksums.c.obj "/release"
    "/nologo" "/DEBUG" "/PDB:src\bin\pg_checksums\pg_checksums.pdb"
    "/INCREMENTAL:NO" "/STACK:4194304" "/NOEXP" "src/fe_utils/libpgfeutils.a"
    "src/common/libpgcommon.a" "src/port/libpgport.a" "ws2_32.lib" "ws2_32.lib"
    "ws2_32.lib" "ws2_32.lib" "/SUBSYSTEM:CONSOLE" "kernel32.lib" "user32.lib"
    "gdi32.lib" "winspool.lib" "shell32.lib" "ole32.lib" "oleaut32.lib"
    "uuid.lib" "comdlg32.lib" "advapi32.lib"
    libpgcommon.a(controldata_utils.c.obj) : error LNK2001: unresolved external
    symbol pg_comp_crc32c
    
    
    Dave
    
    
    >
    >
    > Also, yikes, that's an ugly way of doing hardware detection. Jumping out
    > of a
    > signal handler into normal code. Brrr.
    >
    > Greetings,
    >
    > Andres Freund
    >