This is now fixed, you just have to wait for appveyor to finish its job.
Guys, I have pushed Win64 VM including the Pharo flavour.
It works well in Squeak but I'm not a Pharo user (or very casual).
All I'm asking for weeks or even months is a little feedback...
So this evening, when I see that the 64 bits image does not even start and
that I got absolutely no feedback except this late one of Henrik (Thank you
thank you thank you Henrik), I feel sad.
Helping Pharo is not very rewarding :(

2017-06-02 22:50 GMT+02:00 Nicolas Cellier <
nicolas.cellier.aka.n...@gmail.com>:

>
>
> 2017-06-02 22:35 GMT+02:00 Nicolas Cellier <nicolas.cellier.aka.nice@
> gmail.com>:
>
>>
>>
>> 2017-06-02 22:21 GMT+02:00 Nicolas Cellier <nicolas.cellier.aka.nice@gmai
>> l.com>:
>>
>>> Follow up: it's not enough...
>>>
>>> Program received signal SIGSEGV, Segmentation fault.
>>> 0x000000000051cfc8 in dir_EntryLookup (pathString=0xce7edb0
>>> "X:\\Smalltalk\\opensmalltalk-vm\\build.win64x64\\pharo.cog.spur\\builddbg\\vm",
>>> pathLength=71,
>>>     nameString=0xce81868 "PharoV60.sources", nameStringLength=16,
>>> name=0xfe5aa0 "", nameLength=0xfe5a98, creationDate=0xfe5ba8,
>>> modificationDate=0xfe5a88,
>>>     isDirectory=0xfe5ba0, sizeIfFile=0xfe5a90, posixPermissions=0x0,
>>> isSymlink=0x0) at ../../platforms/win32/vm/sqWin32Directory.c:397
>>> 397       *posixPermissions = 0;
>>>
>>> I'll have to understand why those PharoVM last 2 args are zero...
>>>
>>
>> It looks like FilePlugin did not have the -DPharoVM because the backtrace
>> point at the wrong #ifdef branch:
>>
>> (gdb) bt
>> #0  dir_EntryLookup (pathString=0xc27edb0 "X:\\Smalltalk\\opensmalltalk-
>> vm\\build.win64x64\\pharo.cog.spur\\builddbg\\vm", pathLength=71,
>>     nameString=0xc281868 "PharoV60.sources", nameStringLength=16,
>> name=0xfe5aa0 "ryEntry", nameLength=0xfe5a98, creationDate=0xfe5ba8,
>>     modificationDate=0xfe5a88, isDirectory=0xfe5ba0, sizeIfFile=0xfe5a90,
>> posixPermissions=0x0, isSymlink=0x0)
>>     at ../../platforms/win32/vm/sqWin32Directory.c:379
>> #1  0x00000000005835a6 in primitiveDirectoryEntry () at
>> ../../src/plugins/FilePlugin/FilePlugin.c:654
>> #2  0x0000000000442d5e in primitiveExternalCall () at
>> ../../spur64src/vm/gcc3x-cointerp.c:76521
>> #3  0x000000000040d8ba in interpret () at ../../spur64src/vm/gcc3x-coint
>> erp.c:6373
>> #4  0x0000000000429046 in enterSmalltalkExecutiveImplementation () at
>> ../../spur64src/vm/gcc3x-cointerp.c:18181
>> #5  0x00000000004018a8 in interpret () at ../../spur64src/vm/gcc3x-coint
>> erp.c:2678
>> #6  0x00000000005279a8 in sqMain (argc=1, argv=0x11850f0) at
>> ../../platforms/win32/vm/sqWin32Main.c:1572
>> #7  0x0000000000527e95 in WinMain (hInst=0x400000, hPrevInstance=0x0,
>> lpCmdLine=0x11f3f32 "", nCmdShow=10) at ../../platforms/win32/vm/sqWin
>> 32Main.c:1678
>> #8  0x00000000004013ed in __tmainCRTStartup () at
>> /usr/src/debug/mingw64-x86_64-runtime-5.0.2-1/crt/crtexe.c:334
>> #9  0x00000000004014fb in WinMainCRTStartup () at
>> /usr/src/debug/mingw64-x86_64-runtime-5.0.2-1/crt/crtexe.c:184
>>
>> (gdb) up
>> #1  0x00000000005835a6 in primitiveDirectoryEntry () at
>> ../../src/plugins/FilePlugin/FilePlugin.c:654
>> 654                     status = dir_EntryLookup(pathNameIndex,
>> pathNameSize, reqNameIndex, reqNameSize,
>>
>> (gdb) list 646,658
>> 646
>> 647     #    if PharoVM
>> 648                     status = dir_EntryLookup(pathNameIndex,
>> pathNameSize, reqNameIndex, reqNameSize,
>>
>> 649
>>                                                             entryName,
>> &entryNameSize, &createDate,
>> 650
>>
>> &modifiedDate, &dirFlag, &fileSize,
>> 651
>>
>> &posixPermissions, &symlinkFlag);
>> 652
>> 653     #    else /* PharoVM */
>> 654                     status = dir_EntryLookup(pathNameIndex,
>> pathNameSize, reqNameIndex, reqNameSize,
>> 655
>>                                                       entryName,
>> &entryNameSize, &createDate,
>> 656
>>                                                       &modifiedDate,
>> &dirFlag, &fileSize);
>> 657
>> 658     #    endif /* PharoVM */
>>
>> The backtrace should never be at 654!!!
>>
>>
>>
>
> The LOGD shows that $COGDEFS was not used in plugin compilation, so
> -DPharoVM=1 is missing from the clang command line
>
> rm -f builddbg/vm/FilePlugin.ignore
> make -w BUILD=builddbg \
>         -f /cygdrive/X/Smalltalk/opensmalltalk-vm/build.
> win64x64/common/Makefile.plugin \
>         CONFIGURATION=debug TOOLPREFIX=x86_64-w64-mingw32- \
>         THIRDPARTYOUTDIR=/cygdrive/X/Smalltalk/opensmalltalk-vm/.
> thirdparty-cache/windows/x86_64 \
>         PLATDIR=../../platforms PLUGINSRCDIR=../../src
> VMSRCDIR=../../spur64src/vm \
>         LIBNAME=FilePlugin COGDEFS="-DPharoVM=1 -DIMMUTABILITY=1
> -DCOGMTVM=0 -DDEBUGVM=1" XDEFS=-DSQUEAK_BUILTIN_PLUGIN \
>         builddbg/vm/FilePlugin.lib
> make[2] : on entre dans le répertoire « /cygdrive/X/Smalltalk/
> opensmalltalk-vm/build.win64x64/pharo.cog.spur »
> x86_64-w64-mingw32-clang -x c -MT builddbg/FilePlugin/FilePlugin.o -MMD
> -MP -MF deps/FilePlugin.Td -fdeclspec -msse2 -ggdb2 -m64 -mdll -mno-rtd
> -mms-bitfields -O0 -fno-omit-frame-pointer -D_MT -fno-builtin-printf
> -fno-builtin-putchar -fno-builtin-fprintf -Wall -Wno-unused-variable
> -Wno-unknown-pragmas -Wno-unused-label -Wno-unused-function  -I.
> -I../../spur64src/vm -I../../platforms/win32/vm -I../../platforms/Cross/vm
> -I../../src/plugins/FilePlugin -I../../platforms/win32/plugins/FilePlugin
> -I../../platforms/Cross/plugins/FilePlugin -D_WIN32_WINNT=0x0501
> -DWINVER=0x0501 -DWIN64=1 -DWIN32_FILE_SUPPORT -DNO_ISNAN -DNO_SERVICE
> -DNO_STD_FILE_SUPPORT  -DLSB_FIRST -DVM_NAME=\"\" -DSQUEAK_BUILTIN_PLUGIN
> -c ../../src/plugins/FilePlugin/FilePlugin.c -o builddbg/FilePlugin/
> FilePlugin.o
> clang-3.9: warning: argument unused during compilation: '-mdll'
> sed '/^$/d' <deps/FilePlugin.Td | sed '/^.*:$/d' | sed 's/ [^ ]*:/:/' |
> sed 's/^build[^/]*/$(BUILD)/' > deps/FilePlugin.d; rm deps/FilePlugin.Td;
> touch -r ../../src/plugins/FilePlugin/FilePlugin.c deps/FilePlugin.d
> x86_64-w64-mingw32-clang -x c -MT builddbg/FilePlugin/sqWin32FilePrims.o
> -MMD -MP -MF deps/sqWin32FilePrims.Td -fdeclspec -msse2 -ggdb2 -m64 -mdll
> -mno-rtd -mms-bitfields -O0 -fno-omit-frame-pointer -D_MT
> -fno-builtin-printf -fno-builtin-putchar -fno-builtin-fprintf -Wall
> -Wno-unused-variable -Wno-unknown-pragmas -Wno-unused-label
> -Wno-unused-function  -I. -I../../spur64src/vm -I../../platforms/win32/vm
> -I../../platforms/Cross/vm -I../../src/plugins/FilePlugin
> -I../../platforms/win32/plugins/FilePlugin 
> -I../../platforms/Cross/plugins/FilePlugin
> -D_WIN32_WINNT=0x0501 -DWINVER=0x0501 -DWIN64=1 -DWIN32_FILE_SUPPORT
> -DNO_ISNAN -DNO_SERVICE -DNO_STD_FILE_SUPPORT  -DLSB_FIRST -DVM_NAME=\"\"
> -DSQUEAK_BUILTIN_PLUGIN -c 
> ../../platforms/win32/plugins/FilePlugin/sqWin32FilePrims.c
> -o builddbg/FilePlugin/sqWin32FilePrims.o
>
> $ grep -r COGDEFS ../common
> ../common/Makefile:             LIBNAME=$(*F) COGDEFS="$(COGDEFS)"
> XDEFS=-DSQUEAK_BUILTIN_PLUGIN \
> ../common/Makefile:             COGDEFS="$(COGDEFS)" LIBNAME=$(*F)
> $(OBJDIR)/$(*F).dll
> ../common/Makefile.tools:COGDEFS:= $(COGDEFS) -DCOGMTVM=1
> -DDEBUGVM=$(DEBUGVM)
> ../common/Makefile.tools:COGDEFS:= $(COGDEFS) -DCOGMTVM=0
> -DDEBUGVM=$(DEBUGVM)
> ../common/Makefile.tools:DEFS:= $(COGDEFS) $(WINVER) -DWIN64=1
> -DWIN32_FILE_SUPPORT -DNO_ISNAN \
>
> COGDEFS is used in DEFS, but DEFS is overriden in ../common/Makefile.plugin
>
> $ grep -r '\<DEFS\>' ../common
> ../common/Makefile:     $(CC) -o $(OBJDIR)/version.o $(CFLAGS) $(INCLUDES)
> $(DEFS) -c $(WIN32DIR)/version.c
> ../common/Makefile:     $(CC) -o $(OBJDIR)/version.o $(CFLAGS) $(INCLUDES)
> $(DEFS) -c $(WIN32DIR)/version.c
> ../common/Makefile.plugin:DEFS:=        $(WINVER) -DWIN64=1
> -DWIN32_FILE_SUPPORT -DNO_ISNAN \
> ../common/Makefile.rules:ALLFLAGS = $(DEPFLAGS) $(CFLAGS) $(INCLUDES)
> $(DEFS)
> ../common/Makefile.tools:DEFS:= $(COGDEFS) $(WINVER) -DWIN64=1
> -DWIN32_FILE_SUPPORT -DNO_ISNAN \
>
> After a diff with build.win32x86, it appears that the WIN32 version
> directly append $(COGDEFS) to the CFLAGS, so I will commit a fix and retry
> ASAP
>
>
>>> 2017-06-02 17:15 GMT+02:00 Nicolas Cellier <
>>> nicolas.cellier.aka.n...@gmail.com>:
>>>
>>>> Hi Henrik,
>>>> good catch!
>>>>
>>>> platforms/Cross/plugins/FilePlugin/FilePlugin.h says:
>>>>
>>>> sqInt dir_EntryLookup(char *pathString, sqInt pathStringLength, char
>>>> *nameString, sqInt nameStringLength,
>>>>         /* outputs: */
>>>>         char *name, sqInt *nameLength, sqInt *creationDate, sqInt
>>>> *modificationDate,
>>>>         sqInt *isDirectory, squeakFileOffsetType *sizeIfFile, sqInt
>>>> *posixPermissions, sqInt *isSymlink);
>>>>
>>>> platforms/win32/vm/sqWin32Directory.c says
>>>>
>>>> int dir_EntryLookup(char *pathString, int pathLength, char* nameString,
>>>> int nameStringLength,
>>>> /* outputs: */ char *name, int *nameLength, int *creationDate, int
>>>> *modificationDate,
>>>>                     int *isDirectory, squeakFileOffsetType *sizeIfFile,
>>>> sqInt *posixPermissions, sqInt *isSymlink)
>>>>
>>>>
>>>> int* and sqInt* are not going to be a good match on 64 bits...
>>>> But I don't know how the WIN64 Squeak VM could possibly work, because
>>>> prototypes are equally wrong (just with two parameters less).
>>>> And the two paramters added by Pharo are correct!!!
>>>>
>>>> Maybe there is another bug, I will modify the easy part and commit ASAP.
>>>>
>>>> In the long term, we shall include the .h containing declarations into
>>>> the .c implementing the functions and use more agressive -C99 flags forcing
>>>> the prototypes to be defined.
>>>>
>>>>
>>>> 2017-06-02 14:48 GMT+02:00 Henrik Sperre Johansen <
>>>> henrik.s.johan...@veloxit.no>:
>>>>
>>>>> The Windows 64 Pharo VM crashes when loading images*.
>>>>> The Windows 64 Squeak VM runs Pharo images just fine, but lacks some
>>>>> plugins
>>>>> (FT2 from Pharo build works, and can be copied over, SqueakSSL is MiA).
>>>>> Great work!
>>>>>
>>>>> Cheers,
>>>>> Henry
>>>>>
>>>>> *Crash occurs when loading sources;
>>>>> Stack backtrace:
>>>>>         [0000000000495063] dir_EntryLookup + 0x83 in Pharo.exe
>>>>>
>>>>> Smalltalk stack dump:
>>>>>           0xb4f568 I WindowsStore(DiskStore)>basicEntryAt: 0x9a711c0:
>>>>> a(n)
>>>>> WindowsStore
>>>>>           0xb4f5b8 I WindowsStore(DiskStore)>nodeAt
>>>>> :ifPresent:ifAbsent:
>>>>> 0x9a711c0: a(n) WindowsStore
>>>>>           0xb4f610 I WindowsStore(FileSystemStore)>exists: 0x9a711c0:
>>>>> a(n)
>>>>> WindowsStore
>>>>>           0xb4f658 I FileSystem>exists: 0x9a711d8: a(n) FileSystem
>>>>>           0xb4f6a0 I FileReference>exists 0x9a77400: a(n) FileReference
>>>>>           0xb4f6e0 I FileLocator(AbstractFileReference)>exists
>>>>> 0x9a76678:
>>>>> a(n) FileLocator
>>>>>           0xb4f730 M [] in PharoFilesOpener>openSources:forImage:
>>>>> 0xaca7168:
>>>>> a(n) PharoFilesOpener
>>>>>
>>>>> so I assume it's related to additional functionality in
>>>>> <primitive: 'primitiveDirectoryEntry' module: 'FilePlugin'> in the
>>>>> Pharo
>>>>> build.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> View this message in context: http://forum.world.st/please-t
>>>>> est-download-for-Pharo-6-0-tp4948720p4948965.html
>>>>> Sent from the Pharo Smalltalk Developers mailing list archive at
>>>>> Nabble.com.
>>>>>
>>>>>
>>>>
>>>
>>
>

Reply via email to