frmEditGrid Crash testcase

From: "Robins Tharakan" <tharakan(at)gmail(dot)com>
To: pgadmin-hackers(at)postgresql(dot)org
Subject: frmEditGrid Crash testcase
Date: 2008-04-27 23:43:22
Message-ID: 36af4bed0804271643ve42b0cao167aced679436cd6@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

Hi,

When we right click on the last row of a grid with very few rows (about
10-20), the application crashes to a halt with 'segmentation fault'.

I am unable to find a good solution, but of what I understand,
thread->IsRunning() fails when the thread is not actually running. Oddly,
this happens only for small tables and not for those containing greater than
... say 50-100 rows.

I tried the condition (thread & thread->IsRunning) and that fails too. Also
(thread->IsAlive()) meets with the same fate. How can we check whether the
thread is actually executing something or not, without actually causing a
segfault for such cases ?

If we remove this check altogether, this problem obviously gets resolved,
but of course, pgAdmin would then certainly crash if the user requests two
table refreshes back-to-back in quick succession.

Could anyone hint at what is the possible cause / solution to this issue ?
I am using v7237 (1.9 branch).

Regards,
*Robins Tharakan*

DEBUG report on one of my attempts to resolve such crashes.
--------------------------------------------------------
ASSERT INFO:
../include/wx/thrimpl.cpp(42): assert "m_internal" failed in Lock():
wxMutex::Lock(): not initialized

BACKTRACE:
[1] wxThread::IsRunning() cons)
[2] frmEditGrid::OnCellRightClick(wxGridEvent&)
/projects/pgadmin/40_line_numbers_in_sql_view/7/pgadmin/./frm/frmEditGrid.cpp:416
[3] wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&,
wxEvtHandler*, wxEvent&)
[4] wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*)
[5] wxEvtHandler::ProcessEvent(wxEvent&)
[6] wxEvtHandler::ProcessEvent(wxEvent&)
[7] wxWindowBase::TryParent(wxEvent&)
[8] wxEvtHandler::ProcessEvent(wxEvent&)
[9] wxEvtHandler::ProcessEvent(wxEvent&)
[10] wxScrollHelperEvtHandler::ProcessEvent(wxEvent&)
[11] wxGrid::SendEvent(int, int, int, wxMouseEvent&)
[12] wxGrid::ProcessGridCellMouseEvent(wxMouseEvent&)
[13] wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&,
wxEvtHandler*, wxEvent&)
[14] wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*)
[15] wxEvtHandler::ProcessEvent(wxEvent&)
[16] wxWindow::GTKProcessEvent(wxEvent&) cons)
[17] g_closure_invoke()
[18] g_signal_emit_valist()
[19] g_signal_emit()
[20] gtk_propagate_event()
[21] gtk_main_do_event()
[22] g_main_context_dispatch()
[23] g_main_loop_run()
[24] gtk_main()

Responses

Browse pgadmin-hackers by date

  From Date Subject
Next Message Erwin Brandstetter 2008-04-28 18:44:39 Refresh issue in object tree
Previous Message Erwin Brandstetter 2008-04-25 19:51:15 Behavioral issues in data grid: unsaved data, sort/filter