To comment on the following update, log in, then open the issue:
http://www.openoffice.org/issues/show_bug.cgi?id=45439
                  Issue #:|45439
                  Summary:|speculative bug ...
                Component:|gsl
                  Version:|680m79
                 Platform:|Other
                      URL:|
               OS/Version:|All
                   Status:|NEW
        Status whiteboard:|
                 Keywords:|
               Resolution:|
               Issue type:|PATCH
                 Priority:|P4
             Subcomponent:|code
              Assigned to:|pl
              Reported by:|mmeeks





------- Additional comments from [EMAIL PROTECTED] Fri Mar 18 09:44:38 -0800 
2005 -------
So - this is not a 'real' bug in the sense of it biting & sucking blood (yet)
However - while trying to chase down the previous bug. Anyhow:

I added:
Index: source/helper/ppdparser.cxx
===================================================================
RCS file: /cvs/gsl/psprint/source/helper/ppdparser.cxx,v
retrieving revision 1.17
diff -u -r1.17 ppdparser.cxx
--- source/helper/ppdparser.cxx 8 Sep 2004 14:08:39 -0000       1.17
+++ source/helper/ppdparser.cxx 18 Mar 2005 17:31:44 -0000
@@ -261,9 +261,15 @@
     static ::osl::Mutex aMutex;
     ::osl::Guard< ::osl::Mutex > aGuard( aMutex );
 
     String aFile = rFile;
+
+       if( rFile.CompareToAscii( "SGENPRT" ) != COMPARE_EQUAL ) {
+               fprintf( stderr, "Bombing out\n" );
+        return NULL;
+       }
+
     if( rFile.CompareToAscii( "CUPS:", 5 ) != COMPARE_EQUAL )
         aFile = getPPDFile( rFile );
     if( ! aFile.Len() )
     {
 #if OSL_DEBUG_LEVEL > 1


Which [ AFIACS ] synthesises the effect of not being able to parse any PPD files
that CUPS gives us (correct me if I'm wrong).

Anyhow with that patch; if you do:

File->Print, <escape>, File->Printer Settings

you get a nice segv:

(gdb) bt
#0  0x424832f3 in _STL::vector<void*, _STL::allocator<void*> >::size (this=0x4)
at _vector.h:179
#1  0x42483d15 in _M_find<rtl::OUString> (this=0x0, [EMAIL PROTECTED]) at
_hashtable.h:471
#2  0x4248145e in find<rtl::OUString> (this=0x0, [EMAIL PROTECTED]) at
_hashtable.h:498
#3  0x4247d1c0 in _STL::hash_map<rtl::OUString, psp::PPDKey*, rtl::OUStringHash,
_STL::equal_to<rtl::OUString>, _STL::allocator<_STL::pair<rtl::OUString const,
psp::PPDKey*> > >::find (this=0x0, [EMAIL PROTECTED]) at _hash_map.h:182
#4  0x424777d8 in psp::PPDParser::getKey (this=0x0, [EMAIL PROTECTED]) at
/opt/OpenOffice/src680-m79/psprint/source/helper/ppdparser.cxx:513
#5  0x423d0536 in copyJobDataToJobSetup (pJobSetup=0x8c8e7b8, [EMAIL PROTECTED])
    at /opt/OpenOffice/src680-m79/vcl/unx/source/gdi/salprnpsp.cxx:287
#6  0x423d1147 in X11SalInstance::CreateInfoPrinter (this=0x80d4a48,
pQueueInfo=0x8c8bf48, pJobSetup=0x8c8e7b8)
    at /opt/OpenOffice/src680-m79/vcl/unx/source/gdi/salprnpsp.cxx:494
#7  0x4022aa9e in Printer::ImplInit () from ./libvcl680li.so
#8  0x4022b248 in Printer::Printer () from ./libvcl680li.so
#9  0x40858cbe in ImplPrnDlgUpdatePrinter () from ./libsvt680li.so
#10 0x4085fc6e in PrintDialog::DataChanged () from ./libsvt680li.so
#11 0x403353ac in Window::NotifyAllChilds () from ./libvcl680li.so
#12 0x4016e7a9 in Application::NotifyAllWindows () from ./libvcl680li.so
#13 0x40347219 in ImplHandleSalSettings () from ./libvcl680li.so
#14 0x40347905 in ImplWindowFrameProc () from ./libvcl680li.so
#15 0x423e316b in SalDisplay::DispatchInternalEvent () from 
./libvclplug_gen680li.so
#16 0x41e868a2 in GtkXLib::userEventFn () from ./libvclplug_gtk680li.so
#17 0x42310221 in g_idle_dispatch () from /opt/gnome/lib/libglib-2.0.so.0
#18 0x42311e87 in g_main_context_dispatch () from 
/opt/gnome/lib/libglib-2.0.so.0
#19 0x423145c7 in g_main_context_iterate () from /opt/gnome/lib/libglib-2.0.so.0
#20 0x423146c3 in g_main_context_iteration () from 
/opt/gnome/lib/libglib-2.0.so.0
#21 0x41e86a32 in GtkXLib::Yield () from ./libvclplug_gtk680li.so
#22 0x423e766f in X11SalInstance::Yield () from ./libvclplug_gen680li.so
#23 0x4016df72 in Application::Yield () from ./libvcl680li.so
#24 0x402d30d0 in Dialog::Execute () from ./libvcl680li.so
#25 0x4085fd7e in PrintDialog::Execute () from ./libsvt680li.so
#26 0x44031b77 in SfxViewShell::ExecPrint_Impl (this=0x8888478, [EMAIL 
PROTECTED])
    at /opt/OpenOffice/src680-m79/sfx2/source/view/viewprn.cxx:485
#27 0x4401bca4 in SfxStubSfxViewShellExecPrint_Impl () from ./libsfx680li.so
#28 0x4406ed9c in SfxShell::ExecuteSlot () from ./libsfx680li.so
#29 0x46c358ea in SwView::ExecutePrint () from ./libsw680li.so
#30 0x46c09570 in SfxStubSwViewExecutePrint () from ./libsw680li.so

Which is a simple NULL pointer dereference of 
(gdb) down
#5  0x423d0536 in copyJobDataToJobSetup (pJobSetup=0x8c8e7b8, [EMAIL PROTECTED])
    at /opt/OpenOffice/src680-m79/vcl/unx/source/gdi/salprnpsp.cxx:287
287             pKey                                            =
rData.m_pParser->getKey( String( RTL_CONSTASCII_USTRINGPARAM( "InputSlot" ) ) );
(gdb) p rData.m_pParser
$5 = (const psp::PPDParser *) 0x0

After an extended debugging love-in, I discovered that:

Index: source/printer/jobdata.cxx
===================================================================
RCS file: /cvs/gsl/psprint/source/printer/jobdata.cxx,v
retrieving revision 1.5
diff -u -r1.5 jobdata.cxx
--- source/printer/jobdata.cxx  17 Mar 2004 10:51:16 -0000      1.5
+++ source/printer/jobdata.cxx  18 Mar 2005 17:31:46 -0000
@@ -88,8 +88,11 @@
     m_nPSLevel                         = rRight.m_nPSLevel;
     m_nColorDevice                     = rRight.m_nColorDevice;
 
-    if( ! m_pParser && m_aPrinterName.getLength() )
+       fprintf( stderr, "JobData:: = (%p) '%d'\n", m_pParser,
+                        m_aPrinterName.getLength() );
+       if( ! m_pParser )
     {
+               fprintf( stderr, " JobData:: setup context data\n" );
         PrinterInfoManager& rMgr = PrinterInfoManager::get();
         rMgr.setupJobContextData( *this );
     }
Index: source/printer/printerinfomanager.cxx
===================================================================
RCS file: /cvs/gsl/psprint/source/printer/printerinfomanager.cxx,v
retrieving revision 1.27
diff -u -r1.27 printerinfomanager.cxx
--- source/printer/printerinfomanager.cxx       9 Nov 2004 16:38:07 -0000       
1.27
+++ source/printer/printerinfomanager.cxx       18 Mar 2005 17:31:48 -0000
@@ -1246,6 +1158,9 @@
 
 void PrinterInfoManager::setupJobContextData( JobData& rData )
 {
+       fprintf( stderr, "setupJobContextData on printer '%s'\n",
+                        OUStringToOString( rData.m_aPrinterName, 
RTL_TEXTENCODING_UTF8 ).getStr() );
+                                
     std::hash_map< OUString, Printer, OUStringHash >::iterator it =
         m_aPrinters.find( rData.m_aPrinterName );
     if( it != m_aPrinters.end() )
@@ -1253,6 +1168,11 @@
         rData.m_pParser                = it->second.m_aInfo.m_pParser;
         rData.m_aContext       = it->second.m_aInfo.m_aContext;
     }
+       if (!rData.m_pParser) {
+                       fprintf( stderr, "Avoid NULL m_pParser !\n" );
+               rData.m_pParser = m_aGlobalDefaults.m_pParser;
+               rData.m_aContext = m_aGlobalDefaults.m_aContext;
+       }
 }
 
 void PrinterInfoManager::setDefaultPaper( PrinterInfo& rInfo ) const


was part of the way to a fix. Somehow empty m_aPrinterNames are straying into
the picture (from somewhere).

Anyhow ... HTH.

---------------------------------------------------------------------
Please do not reply to this automatically generated notification from
Issue Tracker. Please log onto the website and enter your comments.
http://qa.openoffice.org/issue_handling/project_issues.html#notification

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to