Bug 137483 - quanta crash when debug is stop for any error
Summary: quanta crash when debug is stop for any error
Status: RESOLVED FIXED
Alias: None
Product: quanta
Classification: Miscellaneous
Component: general (show other bugs)
Version: unspecified
Platform: FreeBSD Ports FreeBSD
: NOR crash
Target Milestone: ---
Assignee: András Manţia
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-11-17 09:11 UTC by Ernesto Quiñones Azcárate
Modified: 2006-11-30 12:02 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ernesto Quiñones Azcárate 2006-11-17 09:11:13 UTC
Version:           3.5.4 (using KDE KDE 3.5.4)
Installed from:    FreeBSD Ports
Compiler:          gcc 3.4.4 
OS:                FreeBSD

When I debug my php code with Gubed (gubed installed is GubedQuantaSVN2005-07-05c.tar.gz
) and Gudeb send a error in the debug process, when i resume the debug process quanta crash, show sig11 error and this log is showed:

[New LWP 100156]
[Switching to LWP 100156]
[KCrash handler]
#8  0x0000000805cb5cb0 in strlen () from /lib/libc.so.6
#9  0x0000000804aff1fc in internalLatin1ToUnicode ()
   from /usr/X11R6/lib/libqt-mt.so.3
#10 0x0000000804b01282 in QString::QString ()
   from /usr/X11R6/lib/libqt-mt.so.3
#11 0x00000008078e9d14 in QuantaDebuggerGubed::sendCommand ()
   from /usr/local/lib/kde3/quantadebuggergubed.so
#12 0x00000008078ea68f in QuantaDebuggerGubed::addBreakpoint ()
   from /usr/local/lib/kde3/quantadebuggergubed.so
#13 0x000000000063cca0 in DebuggerManager::refreshBreakpoints ()
#14 0x00000008078ebcac in QuantaDebuggerGubed::processCommand ()
   from /usr/local/lib/kde3/quantadebuggergubed.so
#15 0x00000008078ec7a1 in QuantaDebuggerGubed::slotReadyRead ()
   from /usr/local/lib/kde3/quantadebuggergubed.so
#16 0x00000008078ecfaf in QuantaDebuggerGubed::qt_invoke ()
   from /usr/local/lib/kde3/quantadebuggergubed.so
#17 0x000000080486cde8 in QObject::activate_signal ()
   from /usr/X11R6/lib/libqt-mt.so.3
#18 0x000000080486d552 in QObject::activate_signal ()
   from /usr/X11R6/lib/libqt-mt.so.3
#19 0x0000000803bfa02d in KNetwork::KBufferedSocket::qt_invoke ()
   from /usr/local/lib/libkdecore.so.6
#20 0x000000080486cde8 in QObject::activate_signal ()
   from /usr/X11R6/lib/libqt-mt.so.3
#21 0x000000080486d3ef in QObject::activate_signal ()
   from /usr/X11R6/lib/libqt-mt.so.3
#22 0x000000080488565b in QSocketNotifier::event ()
   from /usr/X11R6/lib/libqt-mt.so.3
#23 0x0000000804811f9d in QApplication::internalNotify ()
   from /usr/X11R6/lib/libqt-mt.so.3
#24 0x000000080481232e in QApplication::notify ()
   from /usr/X11R6/lib/libqt-mt.so.3
#25 0x0000000803ac395a in KApplication::notify ()
   from /usr/local/lib/libkdecore.so.6
#26 0x0000000804806e57 in QEventLoop::activateSocketNotifiers ()
   from /usr/X11R6/lib/libqt-mt.so.3
#27 0x00000008047c55f8 in QEventLoop::processEvents ()
   from /usr/X11R6/lib/libqt-mt.so.3
#28 0x0000000804826419 in QEventLoop::enterLoop ()
   from /usr/X11R6/lib/libqt-mt.so.3
#29 0x0000000804826372 in QEventLoop::exec ()
   from /usr/X11R6/lib/libqt-mt.so.3
#30 0x00000000004e08c3 in main ()
Comment 1 András Manţia 2006-11-30 12:02:14 UTC
SVN commit 609347 by amantia:

(char *)0L is not the same as 0, at least on some systems (mine and a freebsd).
Fixes crashes in the debugger.

BUG: 137483

 M  +1 -0      ChangeLog  
 M  +33 -34    components/debugger/gubed/quantadebuggergubed.cpp  


--- branches/KDE/3.5/kdewebdev/quanta/ChangeLog #609346:609347
@@ -3,6 +3,7 @@
 Version 3.5.6 (Release date: xx-xx-2006; Started 01-09-2006):
  - bugfixes:
       - show Find in Files menu if KFileReplace is installed [related to #132530]
+      - fix various crashes in the debugger [#137483]
 
 Version 3.5.5 (Release date: 11-10-2006; Started 01-09-2006):
  - bugfixes:
--- branches/KDE/3.5/kdewebdev/quanta/components/debugger/gubed/quantadebuggergubed.cpp #609346:609347
@@ -68,7 +68,7 @@
 
   if(m_socket)
   {
-    sendCommand("die", 0);
+    sendCommand("die", (char*)0L);
     m_socket->flush();
     m_socket->close();
     delete m_socket;
@@ -151,7 +151,7 @@
   // Close the socket
   if(m_socket)
   {
-    sendCommand("die", 0);
+    sendCommand("die", (char*)0L);
     m_socket->flush();
     m_socket->close();
 
@@ -182,26 +182,26 @@
 {
   if(newstate == Pause)
   {
-    sendCommand("pause", 0);
-    sendCommand("sendactiveline", 0);
+    sendCommand("pause", (char*)0L);
+    sendCommand("sendactiveline", (char*)0L);
     if(isActive())
       emit updateStatus(DebuggerUI::Paused);
   }
   else if(newstate == Run)
   {
     if(m_executionState == Pause)
-      sendCommand("next", 0);
+      sendCommand("next", (char*)0L);
 
-    sendCommand("run", 0);
+    sendCommand("run", (char*)0L);
     if(isActive())
       emit updateStatus(DebuggerUI::Running);
   }
   else if(newstate == Trace)
   {
     if(m_executionState == Pause)
-      sendCommand("next", 0);
+      sendCommand("next", (char*)0L);
 
-    sendCommand("trace", 0);
+    sendCommand("trace", (char*)0L);
     if(isActive())
       emit updateStatus(DebuggerUI::Tracing);
   }
@@ -315,7 +315,7 @@
 {
   kdDebug(24002) << k_funcinfo << endl;
 
-  sendCommand("wait", 0);
+  sendCommand("wait", (char*)0L);
   debuggerInterface()->enableAction("debug_connect", false);
   debuggerInterface()->enableAction("debug_disconnect", true);
   debuggerInterface()->enableAction("debug_request", false);
@@ -416,28 +416,28 @@
   // See what command we got and act accordingly..
   if(m_command == "commandme")
   {
-    //sendCommand("sendactiveline", 0);
+    //sendCommand("sendactiveline", (char*)0L);
     debuggerInterface()->setActiveLine(mapServerPathToLocal(args["filename"]), args["line"].toLong());
     sendWatches();
     if(m_executionState == Trace)
-      sendCommand("wait", 0);
+      sendCommand("wait", (char*)0L);
 
     if(m_executionState != Pause)
-      sendCommand("next", 0);
+      sendCommand("next", (char*)0L);
   }
   // Send run mode to script
   else if(m_command == "getrunmode")
   {
     debuggingState(true);
-    sendCommand("setdisplaydelay", "newdelay", QString::number(m_displaydelay).ascii(), 0);
+    sendCommand("setdisplaydelay", "newdelay", QString::number(m_displaydelay).ascii(), (char*)0L);
     if(m_executionState == Pause)
-      sendCommand("pause", 0);
+      sendCommand("pause", (char*)0L);
     else if(m_executionState == Run)
-      sendCommand("run", 0);
+      sendCommand("run", (char*)0L);
     else if(m_executionState == Trace)
-      sendCommand("trace", 0);
+      sendCommand("trace", (char*)0L);
 
-    sendCommand("seterrormask", "errormask", QString::number(m_errormask).ascii(), 0);
+    sendCommand("seterrormask", "errormask", QString::number(m_errormask).ascii(), (char*)0L);
   }
   // Just some status info, display on status line
   else if(m_command == "status")
@@ -517,10 +517,10 @@
   else if(m_command == "initialize")
   {
     debuggerInterface()->showStatus(i18n("Established connection to %1").arg(args["filename"]), false);
-    sendCommand("sendprotocolversion", 0);
+    sendCommand("sendprotocolversion", (char*)0L);
 
     debuggerInterface()->setActiveLine(mapServerPathToLocal(args["filename"]), 0);
-    sendCommand("havesource", 0);
+    sendCommand("havesource", (char*)0L);
     debuggingState(true);
   }
   else if(m_command == "sendingwatches")
@@ -558,7 +558,7 @@
     if(args["version"] != protocolversion)
     {
       debuggerInterface()->showStatus(i18n("The script being debugged does not communicate with the correct protocol version"), true);
-      sendCommand("die", 0);
+      sendCommand("die", (char*)0L);
     }
     return;
   }
@@ -589,8 +589,8 @@
 void QuantaDebuggerGubed::sendWatches()
 {
   for(QValueList<QString>::iterator it = m_watchlist.begin(); it != m_watchlist.end(); ++it)
-    sendCommand("getwatch", "variable", (*it).ascii(), 0);
-  sendCommand("sentwatches", "key", 0, 0);
+    sendCommand("getwatch", "variable", (*it).ascii(), (char*)0L);
+  sendCommand("sentwatches", "key", (char*)0L, (char*)0L);
 }
 
 // Send a command to gubed
@@ -620,9 +620,8 @@
   next = firstarg;
   while(next)
   {
-    ca[(QString)next] = (QString)va_arg(l_Arg, char*) ;
+    ca[(QString)next] = (QString)va_arg(l_Arg, char*);
 //     kdDebug(24002) << k_lineinfo << " Added arg/valuepair " << next << ", " << ca[next].left(30) << endl;
-
     next = va_arg(l_Arg, char*);
   }
 
@@ -673,33 +672,33 @@
 void QuantaDebuggerGubed::stepInto()
 {
   setExecutionState(Pause);
-  sendCommand("next", 0);
+  sendCommand("next", (char*)0L);
 }
 
 // Step over function
 void QuantaDebuggerGubed::stepOver()
 {
   setExecutionState(Pause);
-  sendCommand("stepover", 0);
+  sendCommand("stepover", (char*)0L);
 }
 
 // Step out of function
 void QuantaDebuggerGubed::stepOut()
 {
   setExecutionState(Pause);
-  sendCommand("stepout", 0);
+  sendCommand("stepout", (char*)0L);
 }
 
 // Skip next function
 void QuantaDebuggerGubed::skip()
 {
-  sendCommand("skip", 0);
+  sendCommand("skip", (char*)0L);
 }
 
 // Kill the running script
 void QuantaDebuggerGubed::kill()
 {
-  sendCommand("die", 0);
+  sendCommand("die", (char*)0L);
 }
 
 // Pause execution
@@ -727,7 +726,7 @@
               "function", breakpoint->inFunction().ascii(),
               "expression", breakpoint->condition().ascii(),
               "line", QString::number(breakpoint->line()).ascii(),
-              0);
+              (char *)0L);
 }
 
 // QString QuantaDebuggerGubed::bpToGubed(DebuggerBreakpoint* breakpoint)
@@ -757,13 +756,13 @@
               "function", breakpoint->inFunction().ascii(),
               "expression", breakpoint->condition().ascii(),
               "line", QString::number(breakpoint->line()).ascii(),
-              0);
+              (char*)0L);
 }
 
 // A file was opened...
 void QuantaDebuggerGubed::fileOpened(const QString&)
 {
-  sendCommand("reinitialize", 0);
+  sendCommand("reinitialize", (char*)0L);
 }
 
 // Watch a variable
@@ -771,7 +770,7 @@
 {
   if(m_watchlist.find(variable) == m_watchlist.end())
     m_watchlist.append(variable);
-  sendCommand("getwatch", "variable", variable.ascii(), 0);
+  sendCommand("getwatch", "variable", variable.ascii(), (char*)0L);
 }
 // Remove watch
 void QuantaDebuggerGubed::removeWatch(DebuggerVariable *variable)
@@ -989,7 +988,7 @@
   sendCommand("setvariable", 
               "variable", variable.name().ascii(),
               "value", variable.value().ascii(),
-              0);
+              (char*)0L);
 }
 
 QString QuantaDebuggerGubed::phpSerialize(StringMap args)