2017-06-02 22:35 GMT+02:00 Nicolas Cellier <
[email protected]>:

>
>
> 2017-06-02 22:21 GMT+02:00 Nicolas Cellier <nicolas.cellier.aka.nice@
> gmail.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-
> cointerp.c:6373
> #4  0x0000000000429046 in enterSmalltalkExecutiveImplementation () at
> ../../spur64src/vm/gcc3x-cointerp.c:18181
> #5  0x00000000004018a8 in interpret () at ../../spur64src/vm/gcc3x-
> cointerp.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/
> sqWin32Main.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.nice@gmai
>> l.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 <
>>> [email protected]>:
>>>
>>>> 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