Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Community » U++ community news and announcements » 2019.2 rc5
2019.2 rc5 [message #52537] Mon, 21 October 2019 11:57 Go to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
Here we go.

https://sourceforge.net/projects/upp/files/upp/2019.2/

(pre)release: I will announce on sf.net after a couple of days without serious bug reports... Smile

EDIT: OK, it is now rc5... Smile


Core

Allocator huge block handling optimized, memory consumption improved in specific cases
Index refactored to reduce sizeof and improve performance in specific cases
Introduced workaround for Mingw TLS performance issue
pick/clone semantics refined in several places
Random algorithm changed to xoshiro256**
Uuid generation optimized
Fast U++ allocator is now used internally where possible even if standard allocator us used for new/delete (with USEMALLOC flag)
pick/clone refinements
Value::Compare optimized for standard types


Core/SSH:

A synchronization issue is fixed with socket waits.
3 new fingerprint methods are added (md5, sha1, sha256).
Password change request and event is implemented.
authentiaction-less connection is now possible.
SshShell can now set terminal modes.


Graphics

SVG parser improvements
GLCtrl new method ExecuteGL to execute code with correct GL context
Font metrics optimized for MingW with TLS optimization workaround


CtrlLib

ArrayCtrl sorting improved
CtrlMapper small helper class
DropList supports Add with initializer_list
FileSelButton WhenSelected Event
FileSel has now more sorting options, PreSelect now supports Save As too


Ide

Console output now supports search
Font settings 'set to defaults' button
Debugger now has arrow buttons to change frame without dropping the list
New GUI patch tool
GDB debugger frontend now has memory tab
Icon designer export to .png now exports uhd/dark variants too
Main config dialog now can drag/drop (or move) lines
Run options dialog got new buttons to insert file path / directory path into commandline args
pkg-config support

[Updated on: Mon, 21 October 2019 16:22]

Report message to a moderator

Re: 2019.2 (pre)released [message #52538 is a reply to message #52537] Mon, 21 October 2019 12:47 Go to previous messageGo to next message
Oblivion is currently offline  Oblivion
Messages: 1092
Registered: August 2007
Senior Contributor
Thank you for your efforts!


As a side note, Core/SSH package is also updated:
- A synchronization issue is fixed with socket waits.
- 3 new fingerprint methods are added (md5, sha1, sha256).
- Password change request and event is implemented.
- authentiaction-less connection is now possible.
- SshShell can now set terminal modes.
- Docs are updated accordingly.



Also

There is a minor annoyance with Glib2: I get a lot of deprecation messages for glib2 (2.62) types:
/usr/include/glib-2.0/glib/gtypes.h:549:26: bilgi: declared here
  549 | typedef struct _GTimeVal GTimeVal GLIB_DEPRECATED_TYPE_IN_2_62_FOR(GDateTime);


Nothing big, but bloats the error console on up-to-date setups.


Best regards,
Oblivion



[Updated on: Mon, 21 October 2019 12:48]

Report message to a moderator

Re: 2019.2 (pre)released [message #52539 is a reply to message #52538] Mon, 21 October 2019 12:51 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
Updated; i will ignore glib warning for now, as I am working on gtk3 for the next release.

Mirek
Re: 2019.2 (pre)released [message #52540 is a reply to message #52539] Mon, 21 October 2019 15:40 Go to previous messageGo to next message
Tom1
Messages: 1212
Registered: March 2007
Senior Contributor
Hi Mirek,

Thanks! I have been waiting for this release...

Unfortunately, once I now have it and started to migrate to it, I stumbled across a problem: My application rendering charts crashes after a few hundred or a few thousand times after rendering an image (well, a very LARGE IMAGE of 9880 x 10758 pixels) with BufferPainter. I discovered this in x64 release mode and reproduced in debug mode for the backtrace below.

Platform: Windows 10 Pro x64, MSBT19x64, latest upp -- the release 2019.2 (13648).

Here's the backtrace:

Upp::Dbl_Unlink<Upp::BlkHeader_<256> >(x=1b7948c3840->{ prev=ff4b6644ff4b6644, next=ff526e48ff4b6644, prev_size=26180, size=65355, free=1, last=1, heap=ff4b6644ff4b6644 }) at C:\upp-13648\uppsrc\Core\Util.h 251
Upp::BlkHeader_<256>::UnlinkFree() at C:\upp-13648\uppsrc\Core\HeapImp.h 48
Upp::BlkHeap<Upp::Heap::LargeHeapDetail,256>::Free(h=1b7948c5040->{ prev=dcc, next=1b7c89aaee0, prev_size=24, size=15, free=0, last=1, heap=1b78f94d590 }) at C:\upp-13648\uppsrc\Core\HeapImp.h 243
Upp::Heap::LFree(ptr=1b7948c5050) at C:\upp-13648\uppsrc\Core\lheap.cpp 151
Upp::Heap::Free(ptr=1b7948c5050) at C:\upp-13648\uppsrc\Core\sheap.cpp 248
Upp::MemoryFree_(ptr=1b7948c5050) at C:\upp-13648\uppsrc\Core\sheap.cpp 363
Upp::MemoryFree(ptr=1b7948c5070) at C:\upp-13648\uppsrc\Core\heapdbg.cpp 145
Upp::Rasterizer::AddCells(y=1993, n=1) at C:\upp-13648\uppsrc\Painter\Rasterizer.cpp 97
Upp::Rasterizer::LineRaw(x1=0, y1=510208, x2=0, y2=0) at C:\upp-13648\uppsrc\Painter\Rasterizer.cpp 275
Upp::Rasterizer::CvLine(x1=0, y1=1993, x2=0, y2=0) at C:\upp-13648\uppsrc\Painter\RasterizerClip.cpp 11
Upp::Rasterizer::LineClip(x1=-51570.6378196279, y1=1993, x2=-53122.6291349367, y2=0) at C:\upp-13648\uppsrc\Painter\RasterizerClip.cpp 41
Upp::Rasterizer::Line(p=39d391ce78->{ x=-63112.5752626844, y=-12828.6559571624 }) at C:\upp-13648\uppsrc\Painter\RasterizerClip.cpp 100
Upp::BufferPainter::RenderPathSegments(g=1b7915676e0->{  }, path=1b7948293a0->{ vector=1b7917e71e0 "", items=120 'x', alloc=156 }, attr=1b791567630->{ mtx={ x={ x=1, y=0 }, y={ x=0, y=1 }, t={ x=0, y=0 } }, miter_limit=4, opacity=1, dash=0, evenodd=1, join=3, cap=0, invert=0 }, tolerance=0.3) at C:\upp-13648\uppsrc\Painter\Render.cpp 80
Upp::BufferPainter::RenderPath(width=-1, ss=39d391d6e0->{ ptr=1b791801460 }, color=39d391d6b0->{ b=0, g=0, r=0, a=0 }) at C:\upp-13648\uppsrc\Painter\Render.cpp 312
Upp::BufferPainter::RenderImage(width=-1, image=1b79482e358->{ data=1b79482e260 }, transsrc=39d391d860->{ x={ x=6.58393520168497, y=5.12775868972685 }, y={ x=-5.12705203855568, y=6.58484552575728 }, t={ x=-63112.5752626844, y=-12828.6559571624 } }, flags=128) at C:\upp-13648\uppsrc\Painter\Image.cpp 275
Upp::BufferPainter::FillOp(image=1b79482e358->{ data=1b79482e260 }, transsrc=39d391d860->{ x={ x=6.58393520168497, y=5.12775868972685 }, y={ x=-5.12705203855568, y=6.58484552575728 }, t={ x=-63112.5752626844, y=-12828.6559571624 } }, flags=128) at C:\upp-13648\uppsrc\Painter\Image.cpp 284
Upp::Painter::Fill(image=1b79482e358->{ data=1b79482e260 }, transsrc=39d391d860->{ x={ x=6.58393520168497, y=5.12775868972685 }, y={ x=-5.12705203855568, y=6.58484552575728 }, t={ x=-63112.5752626844, y=-12828.6559571624 } }, flags=128) at C:\upp-13648\uppsrc\Painter\Painter.hpp 88
ChartPainter::PaintIMAGE2D(painter=1b791567468->{  }, object=1b79482e310->{ xform={ x={ x=0.671614273585535, y=0.523072573168923 }, y={ x=0.523000489073552, y=-0.671707133952751 }, t={ x=-1781644.69061699, y=7673915.55762473 } }, image={ data=1b79482e260 }, flags=1573104, selected=0, approved=0, highlight=0, linestyle=15, no_rotate=0, hidden=0, bold=0, italic=, .. }, optimize=1) at C:\Users\tom\D5\program52\ChartCtrl\ChartPainter.h 1086
ChartPainter::PaintBranch0(painter=1b791567468->{  }, branch=1b79482d320->{ visible=1, name={ len=45 '-', s=1b79482acc8 "S:\\maps\\kkj\\ImagemGoogleEarthKK".., chr=1b79482d328 "Ȭ\001", ptr=1b79482acc8 "S:\\maps\\kkj\\ImagemGoogleEarthKK".., wptr=1b79482acc8, qptr=1b79482acc8, v=1b79482d328, w=1b79482d328, q=1b79482d328 }, layerclass=0, fillstyle=1, fillcolor=, .. }, optimize=1) at C:\Users\tom\D5\program52\ChartCtrl\ChartPainter.h 1214
ChartPainter::PaintBranch(painter=1b791567468->{  }, branch=1b79482d320->{ visible=1, name={ len=45 '-', s=1b79482acc8 "S:\\maps\\kkj\\ImagemGoogleEarthKK".., chr=1b79482d328 "Ȭ\001", ptr=1b79482acc8 "S:\\maps\\kkj\\ImagemGoogleEarthKK".., wptr=1b79482acc8, qptr=1b79482acc8, v=1b79482d328, w=1b79482d328, q=1b79482d328 }, layerclass=0, fillstyle=1, fillcolor=, .. }, optimize=1) at C:\Users\tom\D5\program52\ChartCtrl\ChartPainter.h 1237
ChartPainter::Paint(ib=1b791567318->{ kind=0, size={ cx=3068, cy=1993 }, pixels={ ptr=1b7c9901070 }, hotspot={ x=0, y=0 }, spot2={ x=0, y=0 }, dots={ cx=7392, cy=4802 }, resolution=-1 }, charts=1b79155c4c8->{ vector={ vector=1b791554e60, items=1, alloc=3 } }) at C:\Users\tom\D5\program52\ChartCtrl\ChartPainter.h 1335
ChartView::Render() at C:\Users\tom\D5\program52\ChartCtrl\ChartCtrl.h 1803
ChartView::MouseMove(p=39d391e610->{ x=1191, y=843 }, keyflags=4194304) at C:\Users\tom\D5\program52\ChartCtrl\ChartCtrl.h 2357
Upp::Ctrl::MouseEvent(event=32 ' ', p=39d391e798->{ x=1191, y=843 }, zdelta=0, keyflags=4194304) at C:\upp-13648\uppsrc\CtrlCore\CtrlMouse.cpp 148
Upp::Ctrl::MouseEvent0(event=32 ' ', p=39d391e870->{ x=1191, y=843 }, zdelta=0, keyflags=4194304) at C:\upp-13648\uppsrc\CtrlCore\CtrlMouse.cpp 92
Upp::Ctrl::MouseEventH(event=32 ' ', p=39d391e9c0->{ x=1191, y=843 }, zdelta=0, keyflags=4194304) at C:\upp-13648\uppsrc\CtrlCore\CtrlMouse.cpp 110
Upp::Ctrl::MEvent0(e=32 ' ', p=39d391eaf8->{ x=1191, y=843 }, zd=0) at C:\upp-13648\uppsrc\CtrlCore\CtrlMouse.cpp 337
Upp::Ctrl::DispatchMouseEvent(e=32 ' ', p=39d391ef68->{ x=1963, y=843 }, zd=0) at C:\upp-13648\uppsrc\CtrlCore\CtrlMouse.cpp 602
Upp::Ctrl::DispatchMouse(e=32 ' ', p=39d391efd0->{ x=1963, y=843 }, zd=0) at C:\upp-13648\uppsrc\CtrlCore\CtrlMouse.cpp 586
Upp::Ctrl::DoMouse(e=32 ' ', p=39d391f368->{ x=1963, y=843 }, zd=0) at C:\upp-13648\uppsrc\CtrlCore\Win32Wnd.cpp 568
Upp::Ctrl::WindowProc(message=512, wParam=2, lParam=55248811) at C:\upp-13648\uppsrc\CtrlCore\Win32Proc.cpp 210
Upp::TopWindow::WindowProc(message=512, wParam=2, lParam=55248811) at C:\upp-13648\uppsrc\CtrlCore\TopWin32.cpp 70
Upp::Ctrl::WndProc(hWnd=5c0954->{ unused=?? }, message=512, wParam=2, lParam=55248811) at C:\upp-13648\uppsrc\CtrlCore\Win32Wnd.cpp 671
CallWindowProcW()
DispatchMessageW()
Upp::Ctrl::sProcessMSG(msg=39d391f990->{ hwnd=5c0954, message=512, wParam=2, lParam=55248811, time=542712750, pt={ x=1963, y=888 } }) at C:\upp-13648\uppsrc\CtrlCore\Win32Wnd.cpp 768
Upp::Ctrl::ProcessEvent(quit=39d391fa20->0) at C:\upp-13648\uppsrc\CtrlCore\Win32Wnd.cpp 791
Upp::Ctrl::ProcessEvents(quit=39d391fa20->0) at C:\upp-13648\uppsrc\CtrlCore\Win32Wnd.cpp 806
Upp::Ctrl::EventLoop(ctrl=0) at C:\upp-13648\uppsrc\CtrlCore\Win32Wnd.cpp 839
GuiMainFn_() at C:\Users\tom\x\y\z\main.cpp 111
Upp::AppExecute__(app=7ff6b4c516e7) at C:\upp-13648\uppsrc\Core\App.cpp 343
WinMain(hInstance=7ff6b4c20000->{ unused=9460301 }, __formal=0, lpCmdLine=1b78f952343 "", nCmdShow=10) at C:\Users\tom\x\y\z\main.cpp 17
invoke_main()
__scrt_common_main_seh()
__scrt_common_main()
WinMainCRTStartup()
BaseThreadInitThunk()
RtlUserThreadStart()


Thanks and best regards,

Tom

[Updated on: Mon, 21 October 2019 15:58]

Report message to a moderator

Re: 2019.2 (pre)released [message #52541 is a reply to message #52540] Mon, 21 October 2019 16:08 Go to previous messageGo to next message
Tom1
Messages: 1212
Registered: March 2007
Senior Contributor
Mirek,

Now I went back and encountered similar issues on U++ 13068 using MSBT17x64 too. (The reason I have not discovered this problem before, is probably that I have not had this large images to render until now.)

This time it crashed while my program called SetSurface(), but stack trace showed crash again in Upp::Dbl_Unlink(). Is this possibly an allocator issue, or could I have a very strange bug in my code? Debugger does not report any memory leaks if I exit the application before it crashes.

Best regards,

Tom
Re: 2019.2 (pre)released [message #52542 is a reply to message #52541] Mon, 21 October 2019 16:35 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
Tom1 wrote on Mon, 21 October 2019 16:08
Mirek,

Now I went back and encountered similar issues on U++ 13068 using MSBT17x64 too. (The reason I have not discovered this problem before, is probably that I have not had this large images to render until now.)

This time it crashed while my program called SetSurface(), but stack trace showed crash again in Upp::Dbl_Unlink(). Is this possibly an allocator issue, or could I have a very strange bug in my code? Debugger does not report any memory leaks if I exit the application before it crashes.

Best regards,

Tom


Well, that is weird indeed as 13068 is old allocator... So maybe, just maybe it is not allocator problem after all.

Can you post trace for 13068 too please?

Mirek
Re: 2019.2 (pre)released [message #52543 is a reply to message #52542] Mon, 21 October 2019 17:02 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
If it would be possible to catch again the crash through AddCells (in 2019.2), could you switch in debugger to that frame and tell me the value the debugger reports for "a.alloc" ?

Mirek
Re: 2019.2 (pre)released [message #52544 is a reply to message #52543] Mon, 21 October 2019 18:05 Go to previous messageGo to next message
Tom1
Messages: 1212
Registered: March 2007
Senior Contributor
OK. I will try this tomorrow.

Thanks,

Tom
Re: 2019.2 (pre)released [message #52547 is a reply to message #52543] Tue, 22 October 2019 09:18 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
mirek wrote on Mon, 21 October 2019 17:02
If it would be possible to catch again the crash through AddCells (in 2019.2), could you switch in debugger to that frame and tell me the value the debugger reports for "a.alloc" ?

Mirek


Also.. could you please use "Copy backtrace of all threads" for both U++ versions? (I would like to know what other threads are doing...)
Re: 2019.2 (pre)released [message #52549 is a reply to message #52538] Tue, 22 October 2019 09:46 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
Oblivion wrote on Mon, 21 October 2019 12:47

There is a minor annoyance with Glib2: I get a lot of deprecation messages for glib2 (2.62) types:
/usr/include/glib-2.0/glib/gtypes.h:549:26: bilgi: declared here
  549 | typedef struct _GTimeVal GTimeVal GLIB_DEPRECATED_TYPE_IN_2_62_FOR(GDateTime);


Nothing big, but bloats the error console on up-to-date setups.


OK, so as we have to investigate issue reported by Tom error anyway, we might try to fix this as well.

Unfortunately, it seems like internal inconsistency of gtk2 dev libraries (AFAIK, I do not even use GTimeVal anywhere). Unfortunately, this error does not happend on any of distros I have available, so it is a bit hard for me to fix, but I guess we should fix it by specifying max gtk2 version somehow, e.g. -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_60 in compiler flags or perhaps even before gtk/glib include (that is prefered IMO) or by -Wno-deprecated-warnings in compiler flags.

https://tecnocode.co.uk/2019/08/24/gtimeval-deprecation-in-g lib-2-61-2/

Mirek
https://github.com/clearlinux/clr-installer/pull/545
Re: 2019.2 (pre)released [message #52550 is a reply to message #52547] Tue, 22 October 2019 10:49 Go to previous messageGo to next message
Tom1
Messages: 1212
Registered: March 2007
Senior Contributor
Hi,

I think I'm getting closer to a solution:

First, I think it is not the allocator as USEMALLOC crashes too. So, I guess this is good news.

Anyway, it seems clear is that the heap gets corrupted somehow.

The issue disappears if I use:

BufferPainter bpainter(ib);


in my rendering routine instead of:

bpainter.Create(ib);


along with the class wide BufferPainter.

--

Resizing the window very easily causes the crash. Resizing the window also resizes/re-allocates the ImageBuffer used for rendering. This imagebuffer is associated with the BufferPainter through Create(ib). Could this be the real issue? If so, how can I go around it?

I will now get some MT backtraces to show...

Best regards,

Tom
Re: 2019.2 (pre)released [message #52551 is a reply to message #52547] Tue, 22 October 2019 11:03 Go to previous messageGo to next message
Tom1
Messages: 1212
Registered: March 2007
Senior Contributor
Mirek,

Here's one backtrace for 2019.2. They are different for each crash.

----------------------------------
Thread ID: 0xfa0

Upp::Dbl_Unlink<Upp::BlkHeader_<256> >(x=1eed9c1f840->{ prev=ff182412ff0f1b0c, next=ff15210dff182412, prev_size=5387, size=65291, free=1, last=1, heap=ff0f1b0cff091408 })
Upp::BlkHeader_<256>::UnlinkFree()
Upp::BlkHeap<Upp::Heap::LargeHeapDetail,256>::Free(h=1eed9c20340->{ prev=6cc, next=1ee90d31050, prev_size=11, size=8, free=0, last=0, heap=1eed4fed460 })
Upp::Heap::LFree(ptr=1eed9c20350)
Upp::Heap::Free(ptr=1eed9c20350)
Upp::MemoryFree_(ptr=1eed9c20350)
Upp::MemoryFree(ptr=1eed9c20370)
Upp::Vector<Upp::Ctrl::MoveCtrl>::RawFree(ptr=1eed9c20370->{ ctrl={ prec=1eed6a40090 }, from={ left=2297, top=1995, right=2325, bottom=2035 }, to={ left=3812, top=1995, right=3840, bottom=2035 } })
Upp::Vector<Upp::Ctrl::MoveCtrl>::Free()
Upp::Vector<Upp::Ctrl::MoveCtrl>::Clear()
Upp::AMap<Upp::Ctrl *,Upp::Ctrl::MoveCtrl,Upp::Vector<Upp::Ctrl::MoveCtrl> >::Clear()
Upp::Ctrl::SyncMoves()
Upp::Ctrl::WndProc(hWnd=3b04fe->{ unused=?? }, message=3, wParam=0, lParam=2949120)
CallWindowProcW()
SendMessageW()
GetWindowTextW()
MapWindowPoints()
IsCompositionActive()
IsCompositionActive()
GetWindowTextW()
Upp::Ctrl::WindowProc(message=71 'G', wParam=0, lParam=592725532528)
Upp::TopWindow::WindowProc(message=71 'G', wParam=0, lParam=592725532528)
Upp::Ctrl::WndProc(hWnd=3b04fe->{ unused=?? }, message=71 'G', wParam=0, lParam=592725532528)
CallWindowProcW()
DispatchMessageW()
MBToWCSEx()
KiUserCallbackDispatcher()
NtUserMessageCall()
GetWindowTextW()
MapWindowPoints()
IsCompositionActive()
Ordinal96()
IsCompositionActive()
IsCompositionActive()
GetWindowTextW()
Upp::Ctrl::WindowProc(message=274, wParam=61488, lParam=14944857)
Upp::TopWindow::WindowProc(message=274, wParam=61488, lParam=14944857)
Upp::Ctrl::WndProc(hWnd=3b04fe->{ unused=?? }, message=274, wParam=61488, lParam=14944857)
CallWindowProcW()
DispatchMessageW()
IsWindowVisible()
KiUserCallbackDispatcher()
NtUserMessageCall()
GetWindowTextW()
MapWindowPoints()
IsCompositionActive()
Ordinal96()
IsCompositionActive()
IsCompositionActive()
GetWindowTextW()
Upp::Ctrl::WindowProc(message=161, wParam=9, lParam=14944857)
Upp::TopWindow::WindowProc(message=161, wParam=9, lParam=14944857)
Upp::Ctrl::WndProc(hWnd=3b04fe->{ unused=?? }, message=161, wParam=9, lParam=14944857)
CallWindowProcW()
DispatchMessageW()
Upp::Ctrl::sProcessMSG(msg=8a0131fc00->{ hwnd=3b04fe, message=161, wParam=9, lParam=14944857, time=613160312, pt={ x=2649, y=228 } })
Upp::Ctrl::ProcessEvent(quit=8a0131fc90->0)
Upp::Ctrl::ProcessEvents(quit=8a0131fc90->0)
Upp::Ctrl::EventLoop(ctrl=0)
GuiMainFn_()
Upp::AppExecute__(app=7ff6b05416e7)
WinMain(hInstance=7ff6b0510000->{ unused=9460301 }, __formal=0, lpCmdLine=1eed4ff2211 "", nCmdShow=10)
invoke_main()
__scrt_common_main_seh()
__scrt_common_main()
WinMainCRTStartup()
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x1db4

ZwWaitForWorkViaWorkerFactory()
RtlInitializeResource()
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0xad8

ZwWaitForWorkViaWorkerFactory()
RtlInitializeResource()
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0xe44

ZwDelayExecution()
SleepEx()
LicenseEnforcement::t1cb()
<lambda_2eac692c55e4d4ef341436c9b465fd37>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_2eac692c55e4d4ef341436c9b465fd37> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6a53660)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6a53660)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed5088ff0)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0xec0

ZwDelayExecution()
SleepEx()
LicenseEnforcement::t2cb()
<lambda_2eac692c55e4d4ef341436c9b465fd37>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_2eac692c55e4d4ef341436c9b465fd37> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6a53720)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6a53720)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed5089190)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x146c

ZwWaitForWorkViaWorkerFactory()
RtlInitializeResource()
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x27d0

ZwWaitForWorkViaWorkerFactory()
RtlInitializeResource()
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x220

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff6b21420c8->{ section={ DebugInfo=1eed50d7820, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=0)
<lambda_ae0911e3bb62843b7fb2857684178ebc>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_ae0911e3bb62843b7fb2857684178ebc> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6ac3460)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6ac3460)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed8920a90)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x300

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff6b21420c8->{ section={ DebugInfo=1eed50d7820, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=2)
<lambda_ae0911e3bb62843b7fb2857684178ebc>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_ae0911e3bb62843b7fb2857684178ebc> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6ac32e0)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6ac32e0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed8924ab0)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x28c4

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff6b21420c8->{ section={ DebugInfo=1eed50d7820, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=1)
<lambda_ae0911e3bb62843b7fb2857684178ebc>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_ae0911e3bb62843b7fb2857684178ebc> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6ac33a0)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6ac33a0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed8924f40)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x2a44

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff6b21420c8->{ section={ DebugInfo=1eed50d7820, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=3)
<lambda_ae0911e3bb62843b7fb2857684178ebc>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_ae0911e3bb62843b7fb2857684178ebc> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6ac34a0)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6ac34a0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed891cfb0)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0xc54

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff6b21420c8->{ section={ DebugInfo=1eed50d7820, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=5)
<lambda_ae0911e3bb62843b7fb2857684178ebc>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_ae0911e3bb62843b7fb2857684178ebc> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6ac3760)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6ac3760)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed891d110)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x1abc

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff6b21420c8->{ section={ DebugInfo=1eed50d7820, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=4)
<lambda_ae0911e3bb62843b7fb2857684178ebc>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_ae0911e3bb62843b7fb2857684178ebc> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6ac36a0)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6ac36a0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed891bb30)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x1fbc

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff6b21420c8->{ section={ DebugInfo=1eed50d7820, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=6)
<lambda_ae0911e3bb62843b7fb2857684178ebc>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_ae0911e3bb62843b7fb2857684178ebc> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6ac3820)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6ac3820)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed8980bc0)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x21c

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff6b21420c8->{ section={ DebugInfo=1eed50d7820, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=7)
<lambda_ae0911e3bb62843b7fb2857684178ebc>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_ae0911e3bb62843b7fb2857684178ebc> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6ac38e0)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6ac38e0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed898fe60)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x182c

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff6b21420c8->{ section={ DebugInfo=1eed50d7820, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=8)
<lambda_ae0911e3bb62843b7fb2857684178ebc>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_ae0911e3bb62843b7fb2857684178ebc> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6ac39a0)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6ac39a0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed899eb70)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x1a68

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff6b21420c8->{ section={ DebugInfo=1eed50d7820, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=9)
<lambda_ae0911e3bb62843b7fb2857684178ebc>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_ae0911e3bb62843b7fb2857684178ebc> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6ac3a60)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6ac3a60)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed899f460)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x1974

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff6b21420c8->{ section={ DebugInfo=1eed50d7820, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=10)
<lambda_ae0911e3bb62843b7fb2857684178ebc>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_ae0911e3bb62843b7fb2857684178ebc> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6ac3b20)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6ac3b20)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed89ada40)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x1f68

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff6b21420c8->{ section={ DebugInfo=1eed50d7820, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=11)
<lambda_ae0911e3bb62843b7fb2857684178ebc>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_ae0911e3bb62843b7fb2857684178ebc> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6ac3be0)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6ac3be0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed89bbe10)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x23cc

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff6b21420c8->{ section={ DebugInfo=1eed50d7820, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=12)
<lambda_ae0911e3bb62843b7fb2857684178ebc>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_ae0911e3bb62843b7fb2857684178ebc> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6ac3ca0)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6ac3ca0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed9c6eb60)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x2b4c

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff6b21420c8->{ section={ DebugInfo=1eed50d7820, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=13)
<lambda_ae0911e3bb62843b7fb2857684178ebc>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_ae0911e3bb62843b7fb2857684178ebc> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6ac3d60)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6ac3d60)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed89bc760)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x7f8

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff6b21420c8->{ section={ DebugInfo=1eed50d7820, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=14)
<lambda_ae0911e3bb62843b7fb2857684178ebc>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_ae0911e3bb62843b7fb2857684178ebc> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6ac3e20)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6ac3e20)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed89bd680)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x1e88

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff6b21420c8->{ section={ DebugInfo=1eed50d7820, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=15)
<lambda_ae0911e3bb62843b7fb2857684178ebc>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_ae0911e3bb62843b7fb2857684178ebc> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6ac3ee0)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6ac3ee0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed9cbab60)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x1e78

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff6b21420c8->{ section={ DebugInfo=1eed50d7820, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=16)
<lambda_ae0911e3bb62843b7fb2857684178ebc>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_ae0911e3bb62843b7fb2857684178ebc> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6ac3fa0)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6ac3fa0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed89bff30)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x54c

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff6b21420c8->{ section={ DebugInfo=1eed50d7820, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=17)
<lambda_ae0911e3bb62843b7fb2857684178ebc>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_ae0911e3bb62843b7fb2857684178ebc> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=1eed6afb0a0)
invoke_thread_procedure(procedure=7ff6b0a69670, context=1eed6afb0a0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=1eed9cd8030)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 0x87c

NtUserGetMessage()
GetMessageA()
Upp::Ctrl::Win32OverwatchThread(__formal=0)
BaseThreadInitThunk()
RtlUserThreadStart()



Next I will go for the earlier version...

Best regards,

Tom
Re: 2019.2 (pre)released [message #52552 is a reply to message #52551] Tue, 22 October 2019 11:10 Go to previous messageGo to next message
Tom1
Messages: 1212
Registered: March 2007
Senior Contributor
Hi,

Here's the backtrace for 13068:

----------------------------------
Thread ID: 149c3f0

Upp::Dbl_Unlink<Upp::Heap::DLink>(x=14fc259ef30->{ next=ff182616ff152412, prev=ff1a2616ff172212 })
Upp::Heap::DLink::Unlink()
Upp::Heap::DivideBlock(b=14fc259ef30->{ next=ff182616ff152412, prev=ff1a2616ff172212 }, size=4016)
Upp::Heap::TryLAlloc(ii=38 '&', size=4016)
Upp::Heap::LAlloc(size=72cf1d1a0->4016)
Upp::Heap::AllocSz(sz=72cf1d1a0->4016)
Upp::MemoryAlloc_(sz=4016)
Upp::MemoryAlloc(size=3752)
operator new[](size=3752)
Upp::Buffer<Upp::RGBA>::Alloc(size=938)
Upp::RasterEncoder::Create(sz=72cf1d2d8->{ cx=938, cy=2 })
Upp::RasterEncoder::Create(sz=72cf1d330->{ cx=938, cy=2 }, pal_raster=72cf1d510->{  })
Upp::Rescale(tgt=72cf1d560->{ size={ cx=938, cy=2 }, dots={ cx=0, cy=0 }, hotspot={ x=0, y=0 }, line=7ff78094ff18, scanline={ ptr=0?? }, line_bytes=-1011478400, h={ ptr=0 }, palette={ ptr=0 }, palette_cv={ ptr=0 }, format={ type=9, rmask=7, gmask=2128677031, bmask=32759, rpos=2, gpos=1, bpos=0, apos=3 } }, tsz=72cf1d548->{ cx=938, cy=2 }, src=72cf1d510->{  }, src_rc=72cf1d8d8->{ left=2, top=0, right=18, bottom=2 }, progress=72cf1d540->{ ptr=0 })
Upp::Rescale(src=72cf1d8e8->{ data=14ffa1433a0 }, sz=72cf1d690->{ cx=938, cy=2 }, src_rc=72cf1d8d8->{ left=2, top=0, right=18, bottom=2 }, progress=72cf1d688->{ ptr=0 })
Upp::ChImageMaker::Make()
Upp::scImageMaker::Make(object=14fc3b610a0->{ data=0 })
Upp::LRUCache<Upp::Image,Upp::String>::Get(m=72cf1d808->{  })
Upp::MakeImage__(m=72cf1d8c8->{  }, paintonly=0)
Upp::MakeImage(m=72cf1d8c8->{  })
Upp::ChDraw(w=72cf1eec0->{  }, x=2, y=0, cx=938, cy=2, img=72cf1d958->{ data=14ffa1433a0 }, src=72cf1dcb8->{ left=2, top=0, right=18, bottom=2 })
Upp::StdChLookFn(w=72cf1eec0->{  }, r=72cf1e008->{ left=0, top=0, right=942, bottom=1590 }, v=72cf1df98->{ data={ len=0, s=3??, chr=72cf1df98 "`\031MO\001", ptr=14fc24d1960 "x%\025\177", wptr=14fc24d1960, qptr=14fc24d1960, v=72cf1df98, w=72cf1df98, q=72cf1df98 }, svo=7ff78069cfe0 }, op=2)
Upp::sChOp(w=72cf1eec0->{  }, r=72cf1e008->{ left=0, top=0, right=942, bottom=1590 }, v=72cf1df98->{ data={ len=0, s=3??, chr=72cf1df98 "`\031MO\001", ptr=14fc24d1960 "x%\025\177", wptr=14fc24d1960, qptr=14fc24d1960, v=72cf1df98, w=72cf1df98, q=72cf1df98 }, svo=7ff78069cfe0 }, op=2)
Upp::ChPaintEdge(w=72cf1eec0->{  }, r=72cf1e008->{ left=0, top=0, right=942, bottom=1590 }, look=72cf1df98->{ data={ len=0, s=3??, chr=72cf1df98 "`\031MO\001", ptr=14fc24d1960 "x%\025\177", wptr=14fc24d1960, qptr=14fc24d1960, v=72cf1df98, w=72cf1df98, q=72cf1df98 }, svo=7ff78069cfe0 })
Upp::LookFrame::FramePaint(w=72cf1eec0->{  }, r=72cf1e008->{ left=0, top=0, right=942, bottom=1590 })
Upp::Ctrl::CtrlPaint(w=72cf1eec0->{ pageSize={ cx=3840, cy=2160 }, nativeSize={ cx=3840, cy=2160 }, nativeDpi={ cx=192, cy=192 }, palette=0, color16=0, is_mono=0, native=0, actual_offset_bak={ x=754052888, y=7 }, cloff={ vector={ vector=14fc25317a0, items=8, alloc=8 } }, drawingclip={ left=0, top=0, right=942, bottom=1590 }, .. }, clip=72cf1e578->{ left=0, top=0, right=942, bottom=1993 })
Upp::Ctrl::CtrlPaint(w=72cf1eec0->{ pageSize={ cx=3840, cy=2160 }, nativeSize={ cx=3840, cy=2160 }, nativeDpi={ cx=192, cy=192 }, palette=0, color16=0, is_mono=0, native=0, actual_offset_bak={ x=754052888, y=7 }, cloff={ vector={ vector=14fc25317a0, items=8, alloc=8 } }, drawingclip={ left=0, top=0, right=942, bottom=1590 }, .. }, clip=72cf1e898->{ left=0, top=0, right=3840, bottom=1993 })
Upp::Ctrl::CtrlPaint(w=72cf1eec0->{ pageSize={ cx=3840, cy=2160 }, nativeSize={ cx=3840, cy=2160 }, nativeDpi={ cx=192, cy=192 }, palette=0, color16=0, is_mono=0, native=0, actual_offset_bak={ x=754052888, y=7 }, cloff={ vector={ vector=14fc25317a0, items=8, alloc=8 } }, drawingclip={ left=0, top=0, right=942, bottom=1590 }, .. }, clip=72cf1ebb8->{ left=0, top=0, right=3840, bottom=1993 })
Upp::Ctrl::CtrlPaint(w=72cf1eec0->{ pageSize={ cx=3840, cy=2160 }, nativeSize={ cx=3840, cy=2160 }, nativeDpi={ cx=192, cy=192 }, palette=0, color16=0, is_mono=0, native=0, actual_offset_bak={ x=754052888, y=7 }, cloff={ vector={ vector=14fc25317a0, items=8, alloc=8 } }, drawingclip={ left=0, top=0, right=942, bottom=1590 }, .. }, clip=72cf1f500->{ left=0, top=0, right=3840, bottom=2035 })
Upp::Ctrl::UpdateArea0(draw=72cf1f590->{ pageSize={ cx=3840, cy=2160 }, nativeSize={ cx=3840, cy=2160 }, nativeDpi={ cx=192, cy=192 }, palette=0, color16=0, is_mono=0, native=0, actual_offset_bak={ x=2128683405, y=32759 }, cloff={ vector={ vector=0, items=0, alloc=0 } }, drawingclip={ left=-1073741823, top=-1073741823, right=1073741823, .. }, .. }, clip=72cf1f500->{ left=0, top=0, right=3840, bottom=2035 }, backpaint=2)
Upp::Ctrl::UpdateArea(draw=72cf1f590->{ pageSize={ cx=3840, cy=2160 }, nativeSize={ cx=3840, cy=2160 }, nativeDpi={ cx=192, cy=192 }, palette=0, color16=0, is_mono=0, native=0, actual_offset_bak={ x=2128683405, y=32759 }, cloff={ vector={ vector=0, items=0, alloc=0 } }, drawingclip={ left=-1073741823, top=-1073741823, right=1073741823, .. }, .. }, clip=72cf1f500->{ left=0, top=0, right=3840, bottom=2035 })
Upp::Ctrl::WindowProc(message=15, wParam=0, lParam=0)
Upp::TopWindow::WindowProc(message=15, wParam=0, lParam=0)
Upp::Ctrl::WndProc(hWnd=4104d6->{ unused=?? }, message=15, wParam=0, lParam=0)
CallWindowProcW()
DispatchMessageW()
IsWindowVisible()
KiUserCallbackDispatcher()
NtUserDispatchMessage()
DispatchMessageW()
Upp::Ctrl::sProcessMSG(msg=72cf1fbc0->{ hwnd=4104d6, message=15, wParam=0, lParam=0, time=613725437, pt={ x=947, y=913 } })
Upp::Ctrl::ProcessEvent(quit=72cf1fc50->0)
Upp::Ctrl::ProcessEvents(quit=72cf1fc50->0)
Upp::Ctrl::EventLoop(ctrl=0)
GuiMainFn_()
Upp::AppExecute__(app=7ff77ed11c6e)
WinMain(hInstance=7ff77ece0000->{ unused=9460301 }, __formal=0, lpCmdLine=14fc0921b43 "", nCmdShow=10)
invoke_main()
__scrt_common_main_seh()
__scrt_common_main()
WinMainCRTStartup()
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

NtWaitForMultipleObjects()
WaitForMultipleObjectsEx()
Ordinal154()
Ordinal154()
Ordinal154()
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForWorkViaWorkerFactory()
RtlInitializeResource()
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForWorkViaWorkerFactory()
RtlInitializeResource()
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwDelayExecution()
SleepEx()
LicenseEnforcement::t1cb()
<lambda_2eac692c55e4d4ef341436c9b465fd37>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_2eac692c55e4d4ef341436c9b465fd37> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc26e27e0)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc26e27e0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc09b7940)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwDelayExecution()
SleepEx()
LicenseEnforcement::t2cb()
<lambda_2eac692c55e4d4ef341436c9b465fd37>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_2eac692c55e4d4ef341436c9b465fd37> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc26e27a0)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc26e27a0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc09b79d0)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForWorkViaWorkerFactory()
RtlInitializeResource()
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForWorkViaWorkerFactory()
RtlInitializeResource()
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff780942fa8->{ section={ DebugInfo=14ff3c2cf60, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=0)
<lambda_dd03c9ba596f2864e900bd67a2cd4ace>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_dd03c9ba596f2864e900bd67a2cd4ace> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc2751660)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc2751660)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc38fc8e0)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff780942fa8->{ section={ DebugInfo=14ff3c2cf60, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=2)
<lambda_dd03c9ba596f2864e900bd67a2cd4ace>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_dd03c9ba596f2864e900bd67a2cd4ace> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc2751620)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc2751620)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc3902970)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff780942fa8->{ section={ DebugInfo=14ff3c2cf60, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=1)
<lambda_dd03c9ba596f2864e900bd67a2cd4ace>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_dd03c9ba596f2864e900bd67a2cd4ace> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc2751720)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc2751720)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc390eec0)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff780942fa8->{ section={ DebugInfo=14ff3c2cf60, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=3)
<lambda_dd03c9ba596f2864e900bd67a2cd4ace>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_dd03c9ba596f2864e900bd67a2cd4ace> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc2751860)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc2751860)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc39024e0)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff780942fa8->{ section={ DebugInfo=14ff3c2cf60, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=4)
<lambda_dd03c9ba596f2864e900bd67a2cd4ace>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_dd03c9ba596f2864e900bd67a2cd4ace> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc2751920)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc2751920)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc3910b00)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff780942fa8->{ section={ DebugInfo=14ff3c2cf60, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=7)
<lambda_dd03c9ba596f2864e900bd67a2cd4ace>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_dd03c9ba596f2864e900bd67a2cd4ace> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc2751b60)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc2751b60)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc394b760)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff780942fa8->{ section={ DebugInfo=14ff3c2cf60, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=5)
<lambda_dd03c9ba596f2864e900bd67a2cd4ace>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_dd03c9ba596f2864e900bd67a2cd4ace> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc27519e0)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc27519e0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc38f90e0)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff780942fa8->{ section={ DebugInfo=14ff3c2cf60, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=6)
<lambda_dd03c9ba596f2864e900bd67a2cd4ace>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_dd03c9ba596f2864e900bd67a2cd4ace> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc2751aa0)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc2751aa0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc394b440)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff780942fa8->{ section={ DebugInfo=14ff3c2cf60, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=8)
<lambda_dd03c9ba596f2864e900bd67a2cd4ace>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_dd03c9ba596f2864e900bd67a2cd4ace> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc2751c20)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc2751c20)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc3983cd0)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff780942fa8->{ section={ DebugInfo=14ff3c2cf60, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=9)
<lambda_dd03c9ba596f2864e900bd67a2cd4ace>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_dd03c9ba596f2864e900bd67a2cd4ace> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc2751ce0)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc2751ce0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc3983fd0)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff780942fa8->{ section={ DebugInfo=14ff3c2cf60, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=10)
<lambda_dd03c9ba596f2864e900bd67a2cd4ace>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_dd03c9ba596f2864e900bd67a2cd4ace> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc2751da0)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc2751da0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc3984820)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff780942fa8->{ section={ DebugInfo=14ff3c2cf60, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=11)
<lambda_dd03c9ba596f2864e900bd67a2cd4ace>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_dd03c9ba596f2864e900bd67a2cd4ace> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc2751e60)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc2751e60)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc39a0cc0)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff780942fa8->{ section={ DebugInfo=14ff3c2cf60, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=12)
<lambda_dd03c9ba596f2864e900bd67a2cd4ace>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_dd03c9ba596f2864e900bd67a2cd4ace> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc2751f20)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc2751f20)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc4b8cc00)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff780942fa8->{ section={ DebugInfo=14ff3c2cf60, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=13)
<lambda_dd03c9ba596f2864e900bd67a2cd4ace>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_dd03c9ba596f2864e900bd67a2cd4ace> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc2751fe0)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc2751fe0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc4b8cf10)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff780942fa8->{ section={ DebugInfo=14ff3c2cf60, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=14)
<lambda_dd03c9ba596f2864e900bd67a2cd4ace>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_dd03c9ba596f2864e900bd67a2cd4ace> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc3ac10e0)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc3ac10e0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc39a58a0)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff780942fa8->{ section={ DebugInfo=14ff3c2cf60, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=15)
<lambda_dd03c9ba596f2864e900bd67a2cd4ace>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_dd03c9ba596f2864e900bd67a2cd4ace> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc3ac11a0)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc3ac11a0)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc4bb6d60)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff780942fa8->{ section={ DebugInfo=14ff3c2cf60, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=16)
<lambda_dd03c9ba596f2864e900bd67a2cd4ace>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_dd03c9ba596f2864e900bd67a2cd4ace> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc3ac1260)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc3ac1260)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc39a7fb0)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

ZwWaitForAlertByThreadId()
RtlSleepConditionVariableCS()
SleepConditionVariableCS()
Upp::ConditionVariable::Wait(m=7ff780942fa8->{ section={ DebugInfo=14ff3c2cf60, LockCount=-1, RecursionCount=0, OwningThread=0, LockSemaphore=ffffffffffffffff, SpinCount=33556432 }, mti=0 })
Upp::CoWork::Pool::ThreadRun(tno=17)
<lambda_dd03c9ba596f2864e900bd67a2cd4ace>::operator()()
Upp::Function<void __cdecl(void)>::Wrapper<<lambda_dd03c9ba596f2864e900bd67a2cd4ace> >::Execute()
Upp::Function<void __cdecl(void)>::operator()()
Upp::sThreadRoutine(arg=14fc3ac1320)
invoke_thread_procedure(procedure=7ff77f21b130, context=14fc3ac1320)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>(parameter=14fc39a9bb0)
BaseThreadInitThunk()
RtlUserThreadStart()

----------------------------------
Thread ID: 149c3f0

NtUserGetMessage()
GetMessageA()
Upp::Ctrl::Win32OverwatchThread(__formal=0)
BaseThreadInitThunk()
RtlUserThreadStart()



Best regards,

Tom
Re: 2019.2 (pre)released [message #52554 is a reply to message #52547] Tue, 22 October 2019 11:18 Go to previous messageGo to next message
Tom1
Messages: 1212
Registered: March 2007
Senior Contributor
Mirek,

I do not seem to be able to crash through AddCells(). Tried many times.

BR,

Tom
Re: 2019.2 (pre)released [message #52556 is a reply to message #52550] Tue, 22 October 2019 11:37 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
Tom1 wrote on Tue, 22 October 2019 10:49


BufferPainter bpainter(ib);


in my rendering routine instead of:

bpainter.Create(ib);


along with the class wide BufferPainter.


ib is class wide too?

(Just to be in sync, 'class wide' means it exists for more than one Paint invocations, correct?)

Mirek

[Updated on: Tue, 22 October 2019 11:37]

Report message to a moderator

Re: 2019.2 (pre)released [message #52557 is a reply to message #52556] Tue, 22 October 2019 11:47 Go to previous messageGo to next message
Tom1
Messages: 1212
Registered: March 2007
Senior Contributor
They both (ib and bpainter) are actually members of different classes, but both classes are continuously alive throughout the life of the window.

BR,

Tom

EDIT: And yes, the same ib is used in bpainter many times over. Before each use, bpainter.Create(ib); is called. (Meanwhile, the ib may have been resized/reallocated between the calls.)

[Updated on: Tue, 22 October 2019 11:50]

Report message to a moderator

Re: 2019.2 (pre)released [message #52558 is a reply to message #52557] Tue, 22 October 2019 11:51 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
Tom1 wrote on Tue, 22 October 2019 11:47
They both (ib and bpainter) are actually members of different classes, but both classes are continuously alive throughout the life of the window.

BR,

Tom


Would it be possible to test with temporary ib? Just to get some clues...

Also, obvious reason, is not it possible that bpainter gets used (any method called) between ib being resized and Create called? (As in it would be referencing old data of ImageBuffer).

Is Finish called properly?

Mirek
Re: 2019.2 (pre)released [message #52559 is a reply to message #52558] Tue, 22 October 2019 11:55 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
Idea to test:

Start the program.

After all is 'stable', place breakpoint at place where you resize ib (probably by ib.Create ?).

Resize, breapoint hits. Remove it and place breakpoint at bpainter.Create and also into BufferPainter::RenderPath. Continue and check that RenderPath is not called before bpainter.Create...

Re: 2019.2 (pre)released [message #52560 is a reply to message #52559] Tue, 22 October 2019 12:20 Go to previous messageGo to next message
Tom1
Messages: 1212
Registered: March 2007
Senior Contributor
Hi,

Thanks! I will look into your suggestions next.

Meanwhile, here's a "crashable" testcase:

#include <CtrlLib/CtrlLib.h>
#include <Painter/Painter.h>

using namespace Upp;

class BufferPainterCreateCrash: public TopWindow{
	public:
		ImageBuffer ib;
		BufferPainter bpainter;
		Image largeimage;

		BufferPainterCreateCrash(){
			Sizeable().MaximizeBox().MinimizeBox();
			bpainter.PreClipDashed();
			
			ImageBuffer lib(10000,10000);
			BufferPainter bp(lib);
			bp.Clear(LtGray());
			largeimage=lib;
		}
		
		void Paint(Draw &draw){
			SetSurface(draw,Rect(ib.GetSize()),ib,ib.GetSize(),Point(0,0));
		}
		
		void Render(Point p){
			// Use local bpainter below instead of bpainter.Create to avoid crash:
			//BufferPainter bpainter(ib);
			//bpainter.PreClipDashed();
			
			bpainter.Create(ib);
			bpainter.EvenOdd();
			bpainter.Co();
	
			bpainter.Clear(White());
			
			bpainter.Rectangle(0,0,GetSize().cx,GetSize().cy);
			bpainter.Fill(largeimage);
			int fh=StdFont().GetHeight();
			
			bpainter.Text(10,fh,Format("Cursor now at %`, %`",p.x,p.y),StdFont()).Fill(Black());
			bpainter.Text(10,2*fh,"Grab the window by the edge and resize wildly. Expect crash...",StdFont()).Fill(Black());
			bpainter.Finish();
			// Fast updates
			if(GetTopCtrl()&&GetTopCtrl()->GetHWND()){
				ViewDraw draw(this);
				SetSurface(draw,Rect(ib.GetSize()),ib,ib.GetSize(),Point(0,0));
			}
			
			// For slow / delayed updates use Refresh() instead:
			// Refresh();
		}
		
		void Layout(){
			ib.Create(GetSize());
			Render(Point(0,0));
		}
		
		void MouseMove(Point p, dword keyflags){
			Render(p);
		}
};


GUI_APP_MAIN
{
	BufferPainterCreateCrash().Execute();
	
}


Best regards,

Tom
Re: 2019.2 (pre)released [message #52561 is a reply to message #52559] Tue, 22 October 2019 12:37 Go to previous messageGo to previous message
Tom1
Messages: 1212
Registered: March 2007
Senior Contributor
mirek wrote on Tue, 22 October 2019 12:55
Idea to test:

Start the program.

After all is 'stable', place breakpoint at place where you resize ib (probably by ib.Create ?).

Resize, breapoint hits. Remove it and place breakpoint at bpainter.Create and also into BufferPainter::RenderPath. Continue and check that RenderPath is not called before bpainter.Create...



It takes quite a few repeats until it crashes, so I cannot get it to crash this way in near future. However, if crash is not required: This entered Create first and only thereafter to RenderPath. If GUI is single threaded, I do not think it should do it any other way.

The testcase is logically pretty close to what I'm doing here, so let's focus on that for a while as it crashes very similarly, shall we?

Best regards,

Tom
Previous Topic: 2019.2rc4
Next Topic: 2019.2
Goto Forum:
  


Current Time: Fri Apr 19 06:16:50 CEST 2024

Total time taken to generate the page: 0.03117 seconds