jgfoster / Jade

Jade is an Alternative Development Environment (IDE) for GemStone/S that runs on Microsoft Windows
MIT License
6 stars 2 forks source link

Division by zero error drawing an icon on Wine (Linux) #37

Open jgfoster opened 6 years ago

jgfoster commented 6 years ago

** Dolphin Virtual Machine Dump Report ***

10:17:54 AM, 10/4/2018: Division by zero of 32.0

----> VM Context <---- Process: {18C50210:size 513 words, suspended frame 18C508BD, priority 5, callbacks 2 last failure 2:nil, FP control 80007, thread 00000000} Active Method: SessionManager>>logError: IP: 18BFC5D9 (9) SP: 18C50AF4 BP: 18C50AC8 (543) ActiveFrame: {18C50ACC: cf 18C50AAD, sp 18C50AE4, bp 18C50AC8, ip 5, JadeSessionManager(SessionManager)>>logError:} receiver: a JadeSessionManager arg[0]: a ZeroDivide

New Method: VMLibrary>>dump:path:stackDepth:walkbackDepth: Message Selector: dump:path:stackDepth:walkbackDepth:

----> Stack Back Trace <---- {18C50ACC: cf 18C50AAD, sp 18C50AE4, bp 18C50AC8, ip 5, JadeSessionManager(SessionManager)>>logError:} receiver: a JadeSessionManager arg[0]: a ZeroDivide

{18C50AAC: cf 18C50A8D, sp 18C50AC0, bp 18C50AA8, ip 3, JadeSessionManager(SessionManager)>>unhandledException:} receiver: a JadeSessionManager arg[0]: a ZeroDivide

{18C50A8C: cf 18C50A6D, sp 18C50AA0, bp 18C50A88, ip 3, JadeSessionManager(SessionManager)>>onUnhandledError:} receiver: a JadeSessionManager arg[0]: a ZeroDivide

{18C50A6C: cf 18C50A51, sp 18C50A80, bp 18C50A6C, ip 5, ZeroDivide(Error)>>defaultAction} receiver: a ZeroDivide

{18C50A50: cf 18C50A1D, sp 18C50A64, bp 18C50A38, ip 55, ZeroDivide(Exception)>>_propagateFrom:} receiver: a ZeroDivide arg[0]: a ExceptionHandler stack temp[0]: nil stack temp[1]: a ExceptionHandler stack temp[2]: nil stack temp[3]: a Process('Main' base 18C50000* in SessionManager>>logError: sp=00000000 ip=4 list=00AC0010) stack temp[4]: nil

{18C50A1C: cf 18C509FD, sp 18C50A30, bp 18C50A18, ip 6, ZeroDivide(Exception)>>_propagate} receiver: a ZeroDivide stack temp[0]: nil

{18C509FC: cf 18C509E1, sp 18C50A10, bp 18C509FC, ip 13, ZeroDivide(Exception)>>signal} receiver: a ZeroDivide

{18C509E0: cf 18C509BD, sp 18C509F4, bp 18C509D8, ip 8, ZeroDivide(Exception)>>signal:with:} receiver: a ZeroDivide arg[0]: nil arg[1]: 32

{18C509BC: cf 18C50999, sp 18C509D0, bp 18C509B4, ip 6, ZeroDivide class(Exception class)>>signal:with:} receiver: ZeroDivide arg[0]: nil arg[1]: 32

{18C50998: cf 18C50979, sp 18C509AC, bp 18C50994, ip 5, ZeroDivide class(Exception class)>>signalWith:} receiver: ZeroDivide arg[0]: 32

{18C50978: cf 18C50959, sp 18C5098C, bp 18C50974, ip 3, ZeroDivide class>>dividend:} receiver: ZeroDivide arg[0]: 32

{18C50958: cf 18C50935, sp 18C5096C, bp 18C50950, ip 14, ProcessorScheduler>>fpException:} receiver: a ProcessorScheduler arg[0]: a ByteArray stack temp[0]: a _FPIEEE_RECORD

{18C50934: cf 18C50909, sp 18C50948, bp 18C5092C, ip 16, [] in ProcessorScheduler>>vmi:list:no:with:} receiver: a ProcessorScheduler

{18C50908: cf 18C508E9, sp 18C5091C, bp 18C50904, ip 18, BlockClosure>>ifCurtailed:} receiver: [] @ 0 in nil arg[0]: [] @ 24 in ProcessorScheduler>>vmi:list:no:with:

{18C508E8: cf 18C508BD, sp 18C508FC, bp 18C508D8, ip 27, ProcessorScheduler>>vmi:list:no:with:} receiver: a ProcessorScheduler arg[0]: 1708 arg[1]: nil arg[2]: 10 arg[3]: a ByteArray

{18C508BC: cf 18C5089D, sp 18C508D0, bp 18C508B8, ip 0, Float>>/} receiver: 32 arg[0]: 0

{18C5089C: cf 18C50845, sp 18C508B0, bp 18C50860, ip 113, TextTileIcon>>drawOnGraphics:at:extent:} receiver: a TextTileIcon arg[0]: a GdiplusGraphics arg[1]: a Point arg[2]: a Point stack temp[0]: nil stack temp[1]: nil stack temp[2]: a Point stack temp[3]: 32 stack temp[4]: 'Segoe UI' stack temp[5]: L'\x25b4' stack temp[6]: a GdiplusFont stack temp[7]: a Rectangle stack temp[8]: nil stack temp[9]: 32 stack temp[10]: 0 stack temp[11]: nil

{18C50844: cf 18C5081D, sp 18C50858, bp 18C50838, ip 21, TextTileIcon>>bitmapWithExtent:} receiver: a TextTileIcon arg[0]: a Point stack temp[0]: a GdiplusBitmap stack temp[1]: a GdiplusGraphics

{18C5081C: cf 18C507F1, sp 18C50830, bp 18C5080C, ip 5, TextTileIcon>>addToImageList:mask:} receiver: a TextTileIcon arg[0]: a WinImageList arg[1]: a ColorNone stack temp[0]: nil stack temp[1]: nil

{18C507F0: cf 18C507C1, sp 18C50804, bp 18C507E4, ip 24, [] in ImageManager>>basicAddImage:extent:maskcolor:} receiver: nil arg[0]: a WinImageList

{18C507C0: cf 18C5079D, sp 18C507DC, bp 18C507B8, ip 18, LookupTable>>do:} receiver: a LookupTable arg[0]: [] @ 20 in ImageManager>>basicAddImage:extent:maskcolor: stack temp[0]: 1

{18C5079C: cf 18C50775, sp 18C507B0, bp 18C50790, ip 29, IconImageManager(ImageManager)>>basicAddImage:extent:maskcolor:} receiver: a IconImageManager arg[0]: a TextTileIcon arg[1]: a Point arg[2]: a ColorNone env temp[0]: nil

{18C50774: cf 18C5074D, sp 18C50788, bp 18C50768, ip 13, IconImageManager(ImageManager)>>addImage:extent:maskcolor:} receiver: a IconImageManager arg[0]: a TextTileIcon arg[1]: a Point arg[2]: a ColorNone

{18C5074C: cf 18C50729, sp 18C50760, bp 18C50744, ip 7, IconImageManager(ImageManager)>>addImage:maskcolor:} receiver: a IconImageManager arg[0]: a TextTileIcon arg[1]: a ColorNone

{18C50728: cf 18C50709, sp 18C5073C, bp 18C50724, ip 4, IconImageManager(ImageManager)>>addImage:} receiver: a IconImageManager arg[0]: a TextTileIcon

{18C50708: cf 18C506E9, sp 18C5071C, bp 18C50704, ip 13, [] in IconImageManager(ImageManager)>>indexOfImage:} receiver: a IconImageManager

{18C506E8: cf 18C506C1, sp 18C506FC, bp 18C506DC, ip 10, LookupTable>>at:ifAbsent:} receiver: a LookupTable arg[0]: a TextTileIcon arg[1]: [] @ 11 in ImageManager>>indexOfImage: stack temp[0]: 1

{18C506C0: cf 18C506A1, sp 18C506D4, bp 18C506BC, ip 15, IconImageManager(ImageManager)>>indexOfImage:} receiver: a IconImageManager arg[0]: a TextTileIcon

{18C506A0: cf 18C50685, sp 18C506B4, bp 18C506A0, ip 4, TextTileIcon>>imageIndex} receiver: a TextTileIcon

{18C50684: cf 18C50665, sp 18C50698, bp 18C50680, ip 13, [] in BlockClosure>>Non-symbol: 'doIt'} receiver: nil arg[0]: a Array

{18C50664: cf 18C50645, sp 18C50678, bp 18C50660, ip 14, ListViewColumn>>imageFromRow:} receiver: a ListViewColumn arg[0]: a Array

{18C50644: cf 18C50611, sp 18C50658, bp 18C5062C, ip 43, ListView>>onDisplayDetailsRequired:} receiver: a ListView arg[0]: a LVITEMW stack temp[0]: a Array stack temp[1]: 19 stack temp[2]: a ListViewColumn stack temp[3]: 2 stack temp[4]: nil

{18C50610: cf 18C505F1, sp 18C50624, bp 18C5060C, ip 5, ListView(IconicListAbstract)>>nmGetDispInfoW:} receiver: a ListView arg[0]: a ExternalAddress

{18C505F0: cf 18C505CD, sp 18C50604, bp 18C505E8, ip 27, ListView>>nmNotify:} receiver: a ListView arg[0]: a ExternalAddress stack temp[0]: -177

{18C505CC: cf 18C5059D, sp 18C505E0, bp 18C505B8, ip 18, ContainerView(View)>>wmNotify:wParam:lParam:} receiver: a ContainerView arg[0]: 78 arg[1]: 4240 arg[2]: 3338132 stack temp[0]: a ExternalAddress stack temp[1]: a ListView

{18C5059C: cf 18C5056D, sp 18C505B0, bp 18C50588, ip 23, ContainerView(View)>>dispatchMessage:wParam:lParam:} receiver: a ContainerView arg[0]: 78 arg[1]: 4240 arg[2]: 3338132 stack temp[0]: nil stack temp[1]: wmNotify:wParam:lParam:

{18C5056C: cf 18C50539, sp 18C50580, bp 18C5055C, ip 69, [] in InputState>>wndProc:message:wParam:lParam:cookie:} receiver: nil

{18C50538: cf 18C50511, sp 18C5054C, bp 18C50534, ip 18, BlockClosure>>ifCurtailed:} receiver: [] @ 0 in nil arg[0]: [] @ 79 in InputState>>wndProc:message:wParam:lParam:cookie:

{18C50510: cf 18C504C5, sp 18C5052C, bp 18C504F8, ip 84, InputState>>wndProc:message:wParam:lParam:cookie:} receiver: a InputState arg[0]: 66044 arg[1]: 78 arg[2]: 4240 arg[3]: 3338132 arg[4]: 1668620 stack temp[0]: a ContainerView

{18C504C4: cf 18C5049D, sp 18C504F0, bp 18C504B8, ip 10, ListView(ControlView)>>defaultWindowProcessing:wParam:lParam:} receiver: a ListView arg[0]: 15 arg[1]: 0 arg[2]: 0

{18C5049C: cf 18C50475, sp 18C504B0, bp 18C50490, ip 8, ListView(ControlView)>>wmPaint:wParam:lParam:} receiver: a ListView arg[0]: 15 arg[1]: 0 arg[2]: 0

{18C50474: cf 18C50445, sp 18C50488, bp 18C50460, ip 23, ListView(View)>>dispatchMessage:wParam:lParam:} receiver: a ListView arg[0]: 15 arg[1]: 0 arg[2]: 0 stack temp[0]: nil stack temp[1]: wmPaint:wParam:lParam:

{18C50444: cf 18C50411, sp 18C50458, bp 18C50434, ip 69, [] in InputState>>wndProc:message:wParam:lParam:cookie:} receiver: nil

{18C50410: cf 18C503E9, sp 18C50424, bp 18C5040C, ip 18, BlockClosure>>ifCurtailed:} receiver: [] @ 0 in nil arg[0]: [] @ 79 in InputState>>wndProc:message:wParam:lParam:cookie:

{18C503E8: cf 18C503AD, sp 18C50404, bp 18C503D0, ip 84, InputState>>wndProc:message:wParam:lParam:cookie:} receiver: a InputState arg[0]: 66050 arg[1]: 15 arg[2]: 0 arg[3]: 0 arg[4]: 1670156 stack temp[0]: a ListView

{18C503AC: cf 18C5038D, sp 18C503C8, bp 18C503A8, ip 28, InputState>>pumpMessage:} receiver: a InputState arg[0]: a MSG

{18C5038C: cf 18C50361, sp 18C503A0, bp 18C5037C, ip 18, InputState>>loopWhile:} receiver: a InputState arg[0]: [] @ 9 in InputState>>mainLoop stack temp[0]: a MSG stack temp[1]: true stack temp[2]: nil

{18C50360: cf 18C50345, sp 18C50374, bp 18C50360, ip 15, InputState>>mainLoop} receiver: a InputState

{18C50344: cf 18C50329, sp 18C50358, bp 18C50344, ip 14, [] in InputState>>forkMain} receiver: a InputState

{18C50328: cf 18C5030D, sp 18C5033C, bp 18C50328, ip 13, ExceptionHandler(ExceptionHandlerAbstract)>>markAndTry} receiver: a ExceptionHandler

{18C5030C: cf 18C502E5, sp 18C50320, bp 18C50308, ip 22, [] in ExceptionHandler(ExceptionHandlerAbstract)>>try:} receiver: a ExceptionHandler

{18C502E4: cf 18C502C5, sp 18C502F8, bp 18C502E0, ip 18, BlockClosure>>ifCurtailed:} receiver: [] @ 0 in nil arg[0]: [] @ 39 in ExceptionHandlerAbstract>>try:

{18C502C4: cf 18C502A1, sp 18C502D8, bp 18C502BC, ip 3, BlockClosure>>ensure:} receiver: [] @ 17 in ExceptionHandlerAbstract>>try: arg[0]: [] @ 39 in ExceptionHandlerAbstract>>try: stack temp[0]: nil

{18C502A0: cf 18C50279, sp 18C502B4, bp 18C50294, ip 44, ExceptionHandler(ExceptionHandlerAbstract)>>try:} receiver: a ExceptionHandler arg[0]: [] @ 10 in InputState>>forkMain stack temp[0]: nil stack temp[1]: a Process('Main' base 18C50000* in SessionManager>>logError: sp=00000000 ip=4 list=00AC0010) env temp[0]: nil

{18C50278: cf 18C50255, sp 18C5028C, bp 18C50270, ip 7, BlockClosure>>on:do:} receiver: [] @ 10 in InputState>>forkMain arg[0]: ProcessTermination arg[1]: [] @ 13 in BlockClosure>>newProcess

{18C50254: cf 00000001, sp 18C50268, bp 18C50254, ip 17, [] in BlockClosure>>newProcess} receiver: [] @ 10 in InputState>>forkMain

***** End of dump ***** (reported by Aaron)
brickviking commented 5 years ago

I reported a very similar bug (689) for Dolphin under Wine over on the original Dolphin project. In the end I installed a native gdiplus using winetricks, though Blairmcg also mentioned the following:

  1. Edit the Smalltalk code manually to clamp the extents (or whatever intermediate value might be causing div by zero) to a minimum value greater than zero (eg 1). You can reboot to do this or put a chunk format method definition in a prestart.st file in the startup folder. This approach would allow for further investigation, but there would be cosmetic issues with the text tile icons.

I hope this helps you, as I've been chasing down wine bugs myself.