I cannot understand this situation. Look at the last line.
The debugger states that "m_State.HasDriver()" is false, yet the call was make anyway. What the hell 
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1231042896 (LWP 5287)]
0xb4641020 in DebuggerDriver::CurrentCommand (this=0x8bf1db8)
    at /home/pecan/devel/trunk/src/plugins/debuggergdb/debuggerdriver.cpp:98
98          return m_DCmds.GetCount() ? m_DCmds[0] : 0;
(gdb) bt
#0  0xb4641020 in DebuggerDriver::CurrentCommand (this=0x8bf1db8)
    at /home/pecan/devel/trunk/src/plugins/debuggergdb/debuggerdriver.cpp:98
#1  0xb4666b37 in GDB_driver::ParseOutput (this=0x8bf1db8, output=@0xbf91780c)
    at /home/pecan/devel/trunk/src/plugins/debuggergdb/gdb_driver.cpp:620
#2  0xb464484d in DebuggerGDB::ParseOutput (this=0x8a17918, output=@0xbf91780c)
    at /home/pecan/devel/trunk/src/plugins/debuggergdb/debuggergdb.cpp:1543
#3  0xb4646c8c in DebuggerGDB::OnGDBOutput (this=0x8a17918, event=@0xb3c005c4)
    at /home/pecan/devel/trunk/src/plugins/debuggergdb/debuggergdb.cpp:1918
#4  0xb792d655 in wxAppConsole::HandleEvent ()
   from /usr/lib/libwx_baseu-2.6.so.0
#5  0xb79bcb52 in wxEvtHandler::ProcessEventIfMatches ()
   from /usr/lib/libwx_baseu-2.6.so.0
#6  0xb79bcc9d in wxEventHashTable::HandleEvent ()
   from /usr/lib/libwx_baseu-2.6.so.0
#7  0xb79bce1f in wxEvtHandler::ProcessEvent ()
   from /usr/lib/libwx_baseu-2.6.so.0
#8  0xb79bd2d0 in wxEvtHandler::ProcessPendingEvents ()
   from /usr/lib/libwx_baseu-2.6.so.0
#9  0xb792dbef in wxAppConsole::ProcessPendingEvents ()
   from /usr/lib/libwx_baseu-2.6.so.0
#10 0xb770a4dd in Manager::ProcessPendingEvents () at sdk/manager.cpp:108
#11 0xb77c94cf in SimpleTextLog::AddLog (this=0x8b24490, msg=@0xbf917b9c, 
    addNewLine=true) at sdk/simpletextlog.cpp:70
#12 0xb770f001 in MessageManager::Log (this=0x862afa8, id=6, msg=@0xbf917b9c)
    at sdk/messagemanager.cpp:455
#13 0xb4641f8a in DebuggerGDB::DebugLog (this=0x8a17918, msg=@0xbf917b9c)
    at /home/pecan/devel/trunk/src/plugins/debuggergdb/debuggergdb.cpp:566
#14 0xb4666af9 in GDB_driver::ParseOutput (this=0x8bf1db8, output=@0xbf917b9c)
    at /home/pecan/devel/trunk/src/plugins/debuggergdb/gdb_driver.cpp:613
#15 0xb464484d in DebuggerGDB::ParseOutput (this=0x8a17918, output=@0xbf917b9c)
    at /home/pecan/devel/trunk/src/plugins/debuggergdb/debuggergdb.cpp:1543
#16 0xb4646c8c in DebuggerGDB::OnGDBOutput (this=0x8a17918, event=@0xb3c00570)
    at /home/pecan/devel/trunk/src/plugins/debuggergdb/debuggergdb.cpp:1918
#17 0xb792d655 in wxAppConsole::HandleEvent ()
   from /usr/lib/libwx_baseu-2.6.so.0
#18 0xb79bcb52 in wxEvtHandler::ProcessEventIfMatches ()
   from /usr/lib/libwx_baseu-2.6.so.0
#19 0xb79bcc9d in wxEventHashTable::HandleEvent ()
   from /usr/lib/libwx_baseu-2.6.so.0
#20 0xb79bce1f in wxEvtHandler::ProcessEvent ()
   from /usr/lib/libwx_baseu-2.6.so.0
#21 0xb79bd2d0 in wxEvtHandler::ProcessPendingEvents ()
   from /usr/lib/libwx_baseu-2.6.so.0
#22 0xb792dbef in wxAppConsole::ProcessPendingEvents ()
---Type <return> to continue, or q <return> to quit---q
 from /usr/lib/libwx_baseQuit
(gdb) f 3
#3  0xb4646c8c in DebuggerGDB::OnGDBOutput (this=0x8a17918, event=@0xb3c005c4)
    at /home/pecan/devel/trunk/src/plugins/debuggergdb/debuggergdb.cpp:1918
1918    }
(gdb) p m_state
No symbol "m_state" in current context.
(gdb) p m_State
$1 = {m_pPlugin = 0x8a17918, m_pDriver = 0x0, 
  m_Watches = {<wxArrayPtrVoid> = {<wxBaseArrayPtrVoid> = {m_nSize = 0, 
        m_nCount = 0, m_pItems = 0x0}, <No data fields>}, <No data fields>}, 
  m_Breakpoints = {<wxBaseArrayPtrVoid> = {m_nSize = 0, m_nCount = 0, 
      m_pItems = 0x0}, <No data fields>}, m_BpAutoIndex = 0}
(gdb) f 2
#2  0xb464484d in DebuggerGDB::ParseOutput (this=0x8a17918, output=@0xbf91780c)
    at /home/pecan/devel/trunk/src/plugins/debuggergdb/debuggergdb.cpp:1543
1543            m_State.GetDriver()->ParseOutput(output);
(gdb) p m_State
$2 = {m_pPlugin = 0x8a17918, m_pDriver = 0x0, 
  m_Watches = {<wxArrayPtrVoid> = {<wxBaseArrayPtrVoid> = {m_nSize = 0, 
        m_nCount = 0, m_pItems = 0x0}, <No data fields>}, <No data fields>}, 
  m_Breakpoints = {<wxBaseArrayPtrVoid> = {m_nSize = 0, m_nCount = 0, 
      m_pItems = 0x0}, <No data fields>}, m_BpAutoIndex = 0}
(gdb) f 1
#1  0xb4666b37 in GDB_driver::ParseOutput (this=0x8bf1db8, output=@0xbf91780c)
    at /home/pecan/devel/trunk/src/plugins/debuggergdb/gdb_driver.cpp:620
620             DebuggerCmd* cmd = CurrentCommand();
(gdb) p m_State
No symbol "m_State" in current context.
(gdb) f
#1  0xb4666b37 in GDB_driver::ParseOutput (this=0x8bf1db8, output=@0xbf91780c)
    at /home/pecan/devel/trunk/src/plugins/debuggergdb/gdb_driver.cpp:620
620             DebuggerCmd* cmd = CurrentCommand();
(gdb) f 0
#0  0xb4641020 in DebuggerDriver::CurrentCommand (this=0x8bf1db8)
    at /home/pecan/devel/trunk/src/plugins/debuggergdb/debuggerdriver.cpp:98
98          return m_DCmds.GetCount() ? m_DCmds[0] : 0;
(gdb) p m_DCmds
$3 = {<wxBaseArrayPtrVoid> = {m_nSize = 16, m_nCount = 1, 
    m_pItems = 0x0}, <No data fields>}
(gdb) l
93          RunQueue();
94      }
95
96      DebuggerCmd* DebuggerDriver::CurrentCommand()
97      {
98          return m_DCmds.GetCount() ? m_DCmds[0] : 0;
99      }
100
101     void DebuggerDriver::RunQueue()
102     {
(gdb) up
#1  0xb4666b37 in GDB_driver::ParseOutput (this=0x8bf1db8, output=@0xbf91780c)
    at /home/pecan/devel/trunk/src/plugins/debuggergdb/gdb_driver.cpp:620
620             DebuggerCmd* cmd = CurrentCommand();
(gdb) l
615         int idx = buffer.First(GDB_PROMPT);
616         if (idx != wxNOT_FOUND)
617         {
618             m_ProgramIsStopped = true;
619             m_QueueBusy = false;
620             DebuggerCmd* cmd = CurrentCommand();
621             if (cmd)
622             {
623     //            Log(_T("Command parsing output: ") + buffer.Left(idx));
624                 RemoveTopCommand(false);
(gdb) up
#2  0xb464484d in DebuggerGDB::ParseOutput (this=0x8a17918, output=@0xbf91780c)
    at /home/pecan/devel/trunk/src/plugins/debuggergdb/debuggergdb.cpp:1543
1543            m_State.GetDriver()->ParseOutput(output);
(gdb) p m_state
No symbol "m_state" in current context.
(gdb) p m_State
$4 = {m_pPlugin = 0x8a17918, m_pDriver = 0x0, 
  m_Watches = {<wxArrayPtrVoid> = {<wxBaseArrayPtrVoid> = {m_nSize = 0, 
        m_nCount = 0, m_pItems = 0x0}, <No data fields>}, <No data fields>}, 
  m_Breakpoints = {<wxBaseArrayPtrVoid> = {m_nSize = 0, m_nCount = 0, 
      m_pItems = 0x0}, <No data fields>}, m_BpAutoIndex = 0}
(gdb) l
1538
1539    void DebuggerGDB::ParseOutput(const wxString& output)
1540    {
1541        if (m_State.HasDriver())
1542        {
1543            m_State.GetDriver()->ParseOutput(output);
1544        }
1545    }
1546
1547    void DebuggerGDB::BringAppToFront()
(gdb) p m_State.HasDriver()
$5 = false
(gdb)