tl;dr: Put a breakpoint on dbaui::DatabaseObjectView::doDispatch or /full/path/to/main/dbaccess/source/ui/misc/databaseobjectview.cxx:120 just before you click the "Create Table..." button. Step through it in your debugger line by line and document how for you get. Then recursively repeat and step deeper and deeper into the last statement before the exception is thrown, until you narrow down the failure at its source. A debug build of main/dbaccess may also help ("build debug=true" in main/dbaccess). Email us back with your findings.
The long version: ---------------------- Opening the "Create Table in Design View" dialog and attaching GDB and running "thread apply all bt" doesn't show anything useful, so we go through the source instead. The text "Create Table in Design View" must come from somewhere: [main/dbaccess]$ grep "Create Table in Design View" * -R source/ui/app/app.src: Text [ en-US ] = "Create Table in Design View..." ; Looking at that file we see: String RID_STR_NEW_TABLE { Text [ en-US ] = "Create Table in Design View..." ; }; Now look for RID_STR_NEW_TABLE: [main/dbaccess]$ grep RID_STR_NEW_TABLE * -R source/ui/app/app.src:String RID_STR_NEW_TABLE source/ui/app/app.src:String RID_STR_NEW_TABLE_AUTO source/ui/app/dbu_app.hrc:#define RID_STR_NEW_TABLE RID_STR_APP_START + 4 source/ui/app/dbu_app.hrc:#define RID_STR_NEW_TABLE_AUTO RID_STR_APP_START + 5 source/ui/app/AppDetailView.cxx: rList.push_back( TaskEntry( ".uno:DBNewTable", RID_STR_TABLES_HELP_TEXT_DESIGN, RID_STR_NEW_TABLE ) ); source/ui/app/AppDetailView.cxx: rList.push_back( TaskEntry( ".uno:DBNewTableAutoPilot", RID_STR_TABLES_HELP_TEXT_WIZARD, RID_STR_NEW_TABLE_AUTO ) ); Only the source/ui/app/AppDetailView.cxx is useful, as it contains actual code. This is what it does: switch ( _eType ) { case E_TABLE: rList.push_back( TaskEntry( ".uno:DBNewTable", RID_STR_TABLES_HELP_TEXT_DESIGN, RID_STR_NEW_TABLE ) ); rList.push_back( TaskEntry( ".uno:DBNewTableAutoPilot", RID_STR_TABLES_HELP_TEXT_WIZARD, RID_STR_NEW_TABLE_AUTO ) ); rList.push_back( TaskEntry( ".uno:DBNewView", RID_STR_VIEWS_HELP_TEXT_DESIGN, RID_STR_NEW_VIEW, true ) ); _rData.nTitleId = RID_STR_TABLES_CONTAINER; break; which doesn't help much. But it does link it to ".uno:DBNewTable". Where else is that used? [main/dbaccess]$ grep "\.uno:DBNewTable" * -R source/ui/control/toolboxcontroller.cxx: m_aStates.insert(TCommandState::value_type(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(".uno:DBNewTable")) ,sal_True)); source/ui/app/AppController.cxx: implDescribeSupportedFeature( ".uno:DBNewTable", ID_NEW_TABLE_DESIGN, CommandGroup::INSERT ); source/ui/app/AppController.cxx: implDescribeSupportedFeature( ".uno:DBNewTableAutoPilot",ID_NEW_TABLE_DESIGN_AUTO_PILOT, source/ui/app/app.src: Command = ".uno:DBNewTable"; source/ui/app/AppDetailView.cxx: rList.push_back( TaskEntry( ".uno:DBNewTable", RID_STR_TABLES_HELP_TEXT_DESIGN, RID_STR_NEW_TABLE ) ); source/ui/app/AppDetailView.cxx: rList.push_back( TaskEntry( ".uno:DBNewTableAutoPilot", RID_STR_TABLES_HELP_TEXT_WIZARD, RID_STR_NEW_TABLE_AUTO ) ); uiconfig/dbapp/menubar/menubar.xml: <menu:menuitem menu:id=".uno:DBNewTable"/> Here we have a number of matches. The menubar.xml is related to the GUI layout, we want the code. The app.src we've already looked at. That only leaves toolboxcontroller.cxx, AppController.cxx and AppDetailView.cxx. AppDetailView.cxx only uses ".uno:DBNewTable" for what we've already seen, to add it to rList. toolboxcontroller.cxx also only uses that string in some initialization code. So through a process of elimination, we're only left with AppController.cxx. It contains only 1 matching line: implDescribeSupportedFeature( ".uno:DBNewTable", ID_NEW_TABLE_DESIGN, CommandGroup::INSERT ); We continue on with this ID_NEW_TABLE_DESIGN: [main/dbaccess]$ grep ID_NEW_TABLE_DESIGN * -R source/ui/app/AppController.cxx: case ID_NEW_TABLE_DESIGN: source/ui/app/AppController.cxx: case ID_NEW_TABLE_DESIGN_AUTO_PILOT: source/ui/app/AppController.cxx: case ID_NEW_TABLE_DESIGN_AUTO_PILOT: source/ui/app/AppController.cxx: case ID_NEW_TABLE_DESIGN: source/ui/app/AppController.cxx: case ID_NEW_TABLE_DESIGN_AUTO_PILOT: source/ui/app/AppController.cxx: case ID_NEW_TABLE_DESIGN: source/ui/app/AppController.cxx: implDescribeSupportedFeature( ".uno:DBNewTable", ID_NEW_TABLE_DESIGN, CommandGroup::INSERT ); source/ui/app/AppController.cxx: implDescribeSupportedFeature( ".uno:DBNewTableAutoPilot",ID_NEW_TABLE_DESIGN_AUTO_PILOT, source/ui/app/app.src: MID_NEW_TABLE_DESIGN source/ui/inc/browserids.hxx:#define ID_NEW_TABLE_DESIGN 25 source/ui/inc/browserids.hxx:#define ID_NEW_TABLE_DESIGN_AUTO_PILOT 45 source/ui/inc/toolbox_tmpl.hrc:#define MID_NEW_TABLE_DESIGN \ source/ui/inc/toolbox_tmpl.hrc: Identifier = ID_NEW_TABLE_DESIGN; \ The only source code file is, again, source/ui/app/AppController.cxx. The string ID_NEW_TABLE_DESIGN appears in OApplicationController::GetState() but only returns a setting: case ID_NEW_TABLE_DESIGN: case ID_NEW_TABLE_DESIGN_AUTO_PILOT: aReturn.bEnabled = !isDataSourceReadOnly() && !isConnectionReadOnly(); break; and appears again in OApplicationController::Execute(), in a large switch statement's case block, that ultimately does: if ( bAutoPilot ) getContainer()->PostUserEvent( LINK( this, OApplicationController, OnCreateWithPilot ), reinterpret_cast< void* >( eType ) ); else { Reference< XComponent > xDocDefinition; newElement( eType, aCreationArgs, xDocDefinition ); } with bAutoPilot set to false, so it must be calling newElement(). We've narrowed it down far enough, so we proceed with a debugger. Put a breakpoint on OApplicationController::newElement(), and continue: (gdb) break dbaui::OApplicationController::newElement Breakpoint 1 at 0x7fffcc4eb400: file /AOO/main/dbaccess/source/ui/app/AppController.cxx, line 1995. (gdb) c Now open the dialog in AOO, and it will trigger the breakpoint: Thread 1 "soffice.bin" hit Breakpoint 1, dbaui::OApplicationController::newElement (this=this@entry=0x7fffd801e220, _eType=_eType@entry=dbaui::E_TABLE, i_rAdditionalArguments=..., o_rDocumentDefinition=...) at /AOO/main/dbaccess/source/ui/app/AppController.cxx:1995 1995 { (gdb) Step through with "n", and then stepping into with "s" on line 2024: 2015 case E_TABLE: 2016 { 2017 ::std::auto_ptr< DatabaseObjectView > pDesigner; 2018 SharedConnection xConnection( ensureConnection() ); 2019 if ( !xConnection.is() ) 2020 break; 2021 2022 if ( _eType == E_TABLE ) 2023 { 2024 pDesigner.reset( new TableDesigner( getORB(), this, getFrame() ) ); 2025 } I didn't have much luck stepping into line 2024, but did look for this TableDesigner: [main/dbaccess]$ grep TableDesigner * -R source/ui/misc/databaseobjectview.cxx: //= TableDesigner source/ui/misc/databaseobjectview.cxx: TableDesigner::TableDesigner( const Reference< XMultiServiceFactory >& _rxORB, const Reference< XDatabaseDocumentUI >& _rxApplication, const Reference< XFrame >& _rxParentFrame ) source/ui/misc/databaseobjectview.cxx: void TableDesigner::fillDispatchArgs( ::comphelper::NamedValueCollection& i_rDispatchArgs, const Any& _aDataSource, source/ui/misc/databaseobjectview.cxx: Reference< XComponent > TableDesigner::doCreateView( const Any& _rDataSource, const ::rtl::OUString& _rObjectName, source/ui/misc/databaseobjectview.cxx: OSL_ENSURE( xDesignerComponent.is(), "TableDesigner::doCreateView: a designer which is no dialog and no component?" ); source/ui/misc/databaseobjectview.cxx: Reference< XInterface > TableDesigner::impl_getConnectionProvidedDesigner_nothrow( const ::rtl::OUString& _rTableName ) source/ui/app/AppController.cxx: pDesigner.reset( new TableDesigner( getORB(), this, m_aCurrentFrame.getFrame() ) ); source/ui/app/AppController.cxx: pDesigner.reset( new TableDesigner( getORB(), this, getFrame() ) ); source/ui/inc/databaseobjectview.hxx: //= TableDesigner source/ui/inc/databaseobjectview.hxx: class TableDesigner : public DatabaseObjectView source/ui/inc/databaseobjectview.hxx: TableDesigner( and in source/ui/misc/databaseobjectview.cxx we see it does very little: TableDesigner::TableDesigner( const Reference< XMultiServiceFactory >& _rxORB, const Reference< XDatabaseDocumentUI >& _rxApplication, const Reference< XFrame >& _rxParentFrame ) :DatabaseObjectView( _rxORB, _rxApplication, _rxParentFrame, static_cast< ::rtl::OUString >( URL_COMPONENT_TABLEDESIGN ) ) { } Further on in OApplicationController::newElement() then: 2032 xComponent.set( pDesigner->createNew( xDataSource, i_rAdditionalArguments ), UNO_QUERY ); Stepping into it, reading more code, etc. I eventually found a useful function, DatabaseObjectView::doDispatch() in source/ui/misc/databaseobjectv iew.cxx. Putting a breakpoint on it, we see this stack trace when it's hit: Thread 1 "soffice.bin" hit Breakpoint 2, dbaui::DatabaseObjectView::doDispatch (this=this@entry=0x7fffade11c58, i_rDispatchArgs=...) at /AOO/main/dbaccess/source/ui/misc/databaseobjectview.cxx:120 120 { (gdb) bt #0 dbaui::DatabaseObjectView::doDispatch (this=this@entry=0x7fffade11c58, i_rDispatchArgs=...) at /AOO/main/dbaccess/source/ui/m isc/databaseobjectview.cxx:120 #1 0x00007fffcc63543c in dbaui::DatabaseObjectView::doCreateView (this=this@entry=0x7fffade11c58, _rDataSource=..., _rObjectName=..., i_rCreationArgs=...) at /AOO/main/dbaccess/source/ui/m isc/databaseobjectview.cxx:115 #2 0x00007fffcc635513 in dbaui::TableDesigner::doCreateView (this=this@entry=0x7fffade11c58, _rDataSource=..., _rObjectName=..., i_rCreationArgs=...) at /AOO/main/dbaccess/source/ui/m isc/databaseobjectview.cxx:258 #3 0x00007fffcc634785 in dbaui::DatabaseObjectView::createNew (this=0x7fffade11c58, _xDataSource=..., i_rDispatchArgs=...) at /AOO/main/dbaccess/source/ui/misc/databaseobjectview.cxx:95 #4 0x00007fffcc4eb65b in dbaui::OApplicationController::newElement (this=this@entry=0x7fffd801e220, _eType=_eType@entry=dbaui::E_TABLE, i_rAdditionalArguments=..., o_rDocumentDefinition=...) at /AOO/main/dbaccess/source/ui/app/AppController.cxx:2032 #5 0x00007fffcc4f92cb in dbaui::OApplicationController::Execute (this=0x7fffd801e220, _nId=<optimized out>, aArgs=...) at /AOO/main/dbaccess/source/ui/app/AppController.cxx:1278 #6 0x00007fffcc54fa15 in dbaui::OGenericUnoController::executeChecked (this=0x7fffd801e220, _rCommand=..., aArgs=...) at /AOO/main/dbaccess/source/ui/browser/genericcontroller.cxx:1270 #7 0x00007fffcc517324 in dbaui::OCreationList::onSelected (this=<optimized out>, _pEntry=<optimized out>) at /AOO/main/dbaccess/source/ui/a pp/AppDetailView.cxx:364 #8 0x00007ffff31015ca in ImplHandleMouseEvent (pWindow=pWindow@entry =0x7fffd9c8f320, nSVEvent=nSVEvent@entry=2, bMouseLeave=bMouseLeave@entry=0 '\000', nX=<optimized out>, nY=<optimized out>, nMsgTime=<optimized out>, nCode=1, nMode=<optimized out>) at /AOO/main/vcl/source/window/winproc.cxx:813 #9 0x00007ffff310250d in ImplHandleSalMouseButtonUp (pWindow=pWindow@entry =0x7fffd9c8f320, pEvent=<optimized out>) at /AOO/main/vcl/source/window/wi nproc.cxx:2086 #10 0x00007ffff3101f00 in ImplWindowFrameProc (pWindow=0x7fffd9c8f320, nEvent=<optimized out>, pEvent=0x7fffffffade8) at /AOO/main/vcl/source/window/winproc.cxx:2428 #11 0x00007fffebd07ae8 in GtkSalFrame::signalButton (pEvent=0x9974f0, frame=0x7fffd8f81c88) at /AOO/main/vcl/unx/gtk/window/gtkframe.cxx:2678 #12 0x00007fffea9dbaec in ?? () from /usr/lib/x86_64-linux-gnu/libg tk-x11-2.0.so.0 #13 0x00007fffeb214fa5 in g_closure_invoke () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #14 0x00007fffeb226fc1 in ?? () from /usr/lib/x86_64-linux-gnu/libg object-2.0.so.0 #15 0x00007fffeb22f7f9 in g_signal_emit_valist () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #16 0x00007fffeb23008f in g_signal_emit () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #17 0x00007fffeaaf393c in ?? () from /usr/lib/x86_64-linux-gnu/libg tk-x11-2.0.so.0 #18 0x00007fffea9da284 in gtk_propagate_event () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 #19 0x00007fffea9da63b in gtk_main_do_event () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 #20 0x00007fffea64ec8c in ?? () from /usr/lib/x86_64-linux-gnu/libg dk-x11-2.0.so.0 #21 0x00007fffeaf3e197 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #22 0x00007fffeaf3e3f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #23 0x00007fffeaf3e49c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #24 0x00007fffebcf0592 in GtkXLib::Yield (this=0x7ffff7f77010, bWait=<optimized out>, bHandleAllCurrentEvents=<optimized out>) at /AOO/main/vcl/unx/gtk/app/gtkdata.cxx:874 #25 0x00007ffff2eaa8eb in ImplYield (i_bWait=i_bWait@entry=true, i_bAllEvents=i_bAllEvents@entry=false) at /AOO/main/vcl/source/app/svapp .cxx:476 #26 0x00007ffff2ea794c in Application::Yield (i_bAllEvents=i_bAllEvents@entry=false) at /AOO/main/vcl/source/app/svapp.cxx:510 #27 0x00007ffff2ea7971 in Application::Execute () at /AOO/main/vcl/source/app/svapp.cxx:453 #28 0x00007ffff77140ff in desktop::Desktop::Main (this=0x7fffffffba40) at /AOO/main/desktop/source/app/app.cxx:2232 #29 0x00007ffff2eae952 in ImplSVMain () at /AOO/main/vcl/source/app/svmai n.cxx:196 #30 0x00007ffff2eaea59 in SVMain () at /AOO/main/vcl/source/app/svmai n.cxx:237 #31 0x00007ffff774a2db in soffice_main () at /AOO/main/desktop/source/app/s officemain.cxx:45 #32 0x0000000000401266 in sal_main () at main.c:31 #33 0x000000000040124b in main (argc=1, argv=0x7fffffffbbd8) at main.c:30 We also see an ugly catch statement there that swallows all exceptions, which is why failure to open that dialog is silently ignored: catch( const Exception& ) { DBG_UNHANDLED_EXCEPTION(); } Maybe if you built Base in debug mode, you'd have more feedback from that DBG_UNHANDLED_EXCEPTION? Anyway on line 155 is where we actually start doing something useful, which is loading m_sComponentURL (= ".component:DB/TableDesign") into target frame "_self": 155 xReturn = xFrameLoader->loadComponentFromURL( 156 m_sComponentURL, 157 ::rtl::OUString(RTL_CONSTASCII _USTRINGPARAM("_self")), 158 0, 159 i_rDispatchArgs.getPropertyValues() 160 ); My attempts to step deeper in aren't going well so I am taking a break. Please try analyze how far you get in DatabaseObjectView::doDispatch() in /main/dbaccess/source/ui/misc/databaseobjectview.cxx, and let me know? Happy debugging Damjan