Bug #357

Check opening dialog from non-main thread

Added by Miroslav Fidler almost 8 years ago. Updated over 7 years ago.

Status:ApprovedStart date:11/25/2012
Priority:NormalDue date:
Assignee:-% Done:

0%

Category:-Spent time:-
Target version:-

Description

- might freeze in DisableCtrls

History

#1 Updated by Massimo Del Fedele almost 8 years ago

Backtraces here :

MAIN THREAD

00-__GI_raise(sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
01-__GI_abort at abort.c:91
02-__assert_fail_base(fmt=<optimized out>,assertion=0x7ffff6465ca5 "!xcb_xlib_unknown_req_in_deq",file=0x7ffff6465c92 "../../src/xcb_io.c",line=<optimized out>,function=<optimized out>) at assert.c:94
03-__GI___assert_fail(assertion=0x7ffff6465ca5 "!xcb_xlib_unknown_req_in_deq",file=0x7ffff6465c92 "../../src/xcb_io.c",line=178,function=0x7ffff6465da0 "dequeue_pending_request") at assert.c:103
04-?? at <unknown>:<unknown>
05-_XReply at <unknown>:<unknown>
06-XQueryPointer at <unknown>:<unknown>
07-Upp::Ctrl::SyncMousePos at /home/massimo/sources/upp-svn/uppsrc/CtrlCore/X11Proc.cpp:34
08-Upp::Ctrl::EventLoop0(ctrl=0x7fffffffbc40) at /home/massimo/sources/upp-svn/uppsrc/CtrlCore/X11Wnd.cpp:434
09-Upp::CallbackActionCallArg<void ()(Upp::Ctrl), Upp::Ctrl*, unsigned long>::Execute(this=0x2ea71d0) at /home/massimo/sources/upp-svn/uppsrc/Core/Callback1.h:48
10-Upp::Callback::Execute(this=0x7fffffffb6c0) at /home/massimo/sources/upp-svn/uppsrc/Core/Callback.cpp:7
11-Upp::Callback::operator()(this=0x7fffffffb6c0) at /home/massimo/sources/upp-svn/uppsrc/Core/Cbgen.h:32
12-Upp::Ctrl::Call(cb={<Upp::Moveable<Upp::Callback, Upp::EmptyClass>> = {<Upp::EmptyClass> = {<No data fields>}, <No data fields>}, action = 0x2ea71d0}) at /home/massimo/sources/upp-svn/uppsrc/CtrlCore/CtrlMt.cpp:67
13-Upp::Ctrl::EventLoop(ctrl=0x7fffffffbc40) at /home/massimo/sources/upp-svn/uppsrc/CtrlCore/CtrlMt.cpp:154
14-Upp::TopWindow::Run(this=0x7fffffffbc40,appmodal=false) at /home/massimo/sources/upp-svn/uppsrc/CtrlCore/TopWindow.cpp:327
15-GuiMainFn_ at /home/massimo/sources/upp-svn/UppCad/UppCad/UppCad.cpp:411
16-Upp::AppExecute__(app=0x42d65f <GuiMainFn_()>) at /home/massimo/sources/upp-svn/uppsrc/Core/App.cpp:322
17-main(argc=1,argv=0x7fffffffe518,envptr=0x2954b90) at /home/massimo/sources/upp-svn/UppCad/UppCad/UppCad.cpp:282

FILESEL THREAD :

00-?? at <unknown>:<unknown>
01-?? at <unknown>:<unknown>
02-XrmGetFileDatabase at <unknown>:<unknown>
03-?? at <unknown>:<unknown>
04-XGetErrorDatabaseText at <unknown>:<unknown>
05-XGetErrorText at <unknown>:<unknown>
06-Xw_error_handler(display=0x2b2b630,event=0x7fffd37eea90) at /home/massimo/sources/upp-svn/bazaar/OCE/oce/src/Xw/Xw_set_trace.cxx:846
07-_XError at <unknown>:<unknown>
08-?? at <unknown>:<unknown>
09-_XReply at <unknown>:<unknown>
10-XGetGeometry at <unknown>:<unknown>
11-gdk_pixmap_foreign_new_for_display at <unknown>:<unknown>
12-Upp::GetGTK(widget=0x2b49480,state=16,shadow=0,detail=0x7fffc8003110 "gnome-fs-regular",type=11,cx=16,cy=16,rect=[0,0],[16,16]) at /home/massimo/sources/upp-svn/uppsrc/CtrlLib/ChGtk0.cpp:146
13-Upp::GtkThemeIcon(name=0x7fffc8003110 "gnome-fs-regular",large=false) at /home/massimo/sources/upp-svn/uppsrc/CtrlLib/ChGtk0.cpp:517
14-Upp::GnomeImage(s=0x1c46852 "fs-regular",large=false) at /home/massimo/sources/upp-svn/uppsrc/CtrlLib/FileSel.cpp:90
15-Upp::GetFileIcon(folder=@0x7fffd37ef110: "/home",filename=@0x7fffd37ef108: "massimo",isdir=true,isexe=false,large=false) at /home/massimo/sources/upp-svn/uppsrc/CtrlLib/FileSel.cpp:196
16-Upp::GetDirIcon(s=@0x7fffd37ef270: "/home/massimo") at /home/massimo/sources/upp-svn/uppsrc/CtrlLib/FileSel.cpp:1277
17-Upp::FileSel::AddPlace(this=0x7fffd37ef9c0,path=@0x7fffd37ef330: "/home/massimo",name=@0x7fffd37ef328: "Home",group=0x1c46aa9 "PLACES:FOLDER",row=-1) at /home/massimo/sources/upp-svn/uppsrc/CtrlLib/FileSel.cpp:1664
18-Upp::FileSel::AddStandardPlaces(this=0x7fffd37ef9c0) at /home/massimo/sources/upp-svn/uppsrc/CtrlLib/FileSel.cpp:1731
19-Upp::FileSel::FileSel(this=0x7fffd37ef9c0) at /home/massimo/sources/upp-svn/uppsrc/CtrlLib/FileSel.cpp:1857
20-StepImport(doc=0x2f8f960) at /home/massimo/sources/upp-svn/UppCad/UppCadCommands/File.icpp:87
21-CommandInterpreter::Process(this=0x2f8fbf0,s=@0x7fffd37f5840: "stepin") at /home/massimo/sources/upp-svn/UppCad/UppCadDocView/CommandInterpreter.cpp:35
22-UppCadDocument::SendCommand(this=0x2f8f960,cmd="stepin") at /home/massimo/sources/upp-svn/UppCad/UppCadDocView/UppCadDocument.cpp:210
23-UppCadDocument::commandLoop(this=0x2f8f960) at /home/massimo/sources/upp-svn/UppCad/UppCadDocView/UppCadDocument.cpp:227
24-Upp::CallbackMethodAction<UppCadDocument, void (UppCadDocument::*)()>::Execute(this=0x303b960) at /home/massimo/sources/upp-svn/uppsrc/Core/Callback0.h:24
25-Upp::Callback::Execute(this=0x7fffd37f5a50) at /home/massimo/sources/upp-svn/uppsrc/Core/Callback.cpp:7
26-Upp::Callback::operator()(this=0x7fffd37f5a50) at /home/massimo/sources/upp-svn/uppsrc/Core/Cbgen.h:32
27-ThreadQueue::callLoop(this=0x2f8f960,cb={<Upp::Moveable<Upp::Callback, Upp::EmptyClass>> = {<Upp::EmptyClass> = {<No data fields>}, <No data fields>}, action = 0x303b960}) at /home/massimo/sources/upp-svn/UppCad/ThreadQueue/ThreadQueue.cpp:26
28-Upp::CallbackMethodActionArg<ThreadQueue, void (ThreadQueue::*)(Upp::Callback), Upp::Callback>::Execute(this=0x301bd70) at /home/massimo/sources/upp-svn/uppsrc/Core/Callback1.h:26
29-Upp::Callback::Execute(this=0x2ef77e0) at /home/massimo/sources/upp-svn/uppsrc/Core/Callback.cpp:7
30-Upp::Callback::operator()(this=0x2ef77e0) at /home/massimo/sources/upp-svn/uppsrc/Core/Cbgen.h:32
31-Upp::sThreadRoutine(arg=0x2ef77e0) at /home/massimo/sources/upp-svn/uppsrc/Core/Mt.cpp:78
32-start_thread(arg=0x7fffd37fe700) at pthread_create.c:308
33-clone at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
34-?? at <unknown>:<unknown>

#2 Updated by Massimo Del Fedele almost 8 years ago

Crash was due probably to a missing GuiLock.
With it, it do work on Linux, but hangs on windows as before.

#3 Updated by Massimo Del Fedele almost 8 years ago

Backtrace of application blocked after opening of FileSel dialog :

THREAD 1

0x76ee64f4 (ntdll.dll)
Upp::Mutex::Enter()
Upp::StaticMutex::Enter()
Upp::EnterGuiMutex(n=3)
Upp::Ctrl::GuiSleep0(ms=1000)
Upp::CallbackActionCallArg<void (cdecl*)(int),int,unsigned int>::Execute()
Upp::Callback::Execute()
Upp::Callback::operator()()
Upp::Ctrl::Call(cb={ action=3e631d8->{ count=1 } })
Upp::Ctrl::GuiSleep(ms=1000)
Upp::Ctrl::EventLoop0(ctrl=12e3d0->{ parent=0, top=3e131e0, exitcode=-2147483648, prev=0, next=0, firstchild=12e4d8, lastchild=12ef68, pos={ x={ data=1076299159 }, y={ data=1077019269 } }, rect={ left=78 'N', top=100 'd', right=1509, bottom=745 }, frame={ count=65115552, vector=3e195a0, elem0=12e40c "l???002" }, info={ len=0, .. }, .., .. })
Upp::CallbackActionCallArg<void (_cdecl*)(Upp::Ctrl *),Upp::Ctrl *,unsigned int>::Execute()
Upp::Callback::Execute()
Upp::Callback::operator()()
Upp::Ctrl::Call(cb={ action=3df7a08->{ count=1 } })
Upp::Ctrl::EventLoop(ctrl=12e3d0->{ parent=0, top=3e131e0, exitcode=-2147483648, prev=0, next=0, firstchild=12e4d8, lastchild=12ef68, pos={ x={ data=1076299159 }, y={ data=1077019269 } }, rect={ left=78 'N', top=100 'd', right=1509, bottom=745 }, frame={ count=65115552, vector=3e195a0, elem0=12e40c "l???002" }, info={ len=0, .. }, .., .. })
Upp::TopWindow::Run(appmodal=0)
GuiMainFn
()
Upp::AppExecute
(app=4146e6)
WinMain(hInstance=400000->{ unused=9460301 }, _formal=0, lpCmdLine=28c5ad "", nCmdShow=10)
_tmainCRTStartup()
WinMainCRTStartup()
Upp::XMLMenuEditor::cmdDblClickCb()

THREAD 2

0x76ee64f4 (ntdll.dll)
Upp::Ctrl::Win32OverwatchThread(__formal=0)

THREAD 3

0x76ee64f4 (ntdll.dll)
Upp::DHCtrl::State(reason=14)
UppCadView::State(reason=14)
Upp::Ctrl::StateDeep(reason=14)
Upp::Ctrl::StateDeep(reason=14)
Upp::Ctrl::StateDeep(reason=14)
Upp::Ctrl::StateDeep(reason=14)
Upp::Ctrl::StateDeep(reason=14)
Upp::Ctrl::StateH(reason=14)
Upp::Ctrl::Enable(aenable=0)
Upp::Ctrl::Disable()
Upp::DisableCtrls(ctrl=572b674->{ vector=546e7c8, items=2, alloc=2 }, exclude=572bcc8->{ parent=0, top=5437df8, exitcode=-2147483648, prev=0, next=0, firstchild=572e638, lastchild=572e508, pos={ x={ data=1093698234 }, y={ data=1081311693 } }, rect={ left=609, top=231, right=1307, bottom=692 }, frame={ count=1, vector=1, elem0=572bd04 "l???002" }, info={ len=22, s=5435fd8 "\177\177\177\177FileSelectorLayout" }, .., .. })
Upp::TopWindow::Run(appmodal=1)
Upp::FileSel::Execute(mode=0)
Upp::FileSel::ExecuteOpen(title=1ec05f8 "Select STEP file:")
StepImport(doc=3e1c518->{ uppCad=12e3d0, database={ objects={ }, nextHandle=6, transactions={ vector={ vector=0, items=0, alloc=0 } }, context={ }, undoRecords={ vector={ vector=0, items=0, alloc=0 } }, redoRecords={ vector={ vector=0, items=0, alloc=0 } }, layersIdx={ key={ key={ vector=3e1d4d8, items=4, alloc=4 }, .. }, .. }, .. }, .., .., .. })
CommandInterpreter::Process(s=572fe20->{ len=6, s=572fe20 "stepin" })
UppCadDocument::SendCommand(cmd={ len=6, s=572fe20 "stepin" })
UppCadDocument::commandLoop()
Upp::CallbackMethodAction<UppCadDocument,void (
_thiscall UppCadDocument::*)(void)>::Execute()
Upp::Callback::Execute()
Upp::Callback::operator()()
ThreadQueue::callLoop(cb={ action=3eb8678->{ count=2 } })
Upp::CallbackMethodActionArg<ThreadQueue,void (__thiscall ThreadQueue::*)(Upp::Callback),Upp::Callback>::Execute()
Upp::Callback::Execute()
Upp::Callback::operator()()
Upp::sThreadRoutine(arg=3e236e0)
_callthreadstartex()
_threadstartex(ptd=5324fe8)

#4 Updated by Miroslav Fidler over 7 years ago

  • Status changed from New to Approved

Also available in: Atom PDF