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. >>>>> >>>>> >>>> >>> >> >