paragui-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [paragui-users] Puzzled newbie question


From: Guillaume Schmid
Subject: Re: [paragui-users] Puzzled newbie question
Date: 29 Apr 2002 09:23:36 +0200

Le dim 28/04/2002 à 23:17, Alexander Pipelka a écrit :
> Hi Guillaume
> 
> You're right. That's really a problem.
> The right procedure would be to call eventSelectItem() *after* updating
> the listboxitem.
> 
> I fixed this for version 1.0.2 which will be released soon.
> If you can't (or don't want to) wait for the official release please
> checkout the sources from the cvs repository:
> 
> cvs -d:pserver:address@hidden:/cvsroot/paragui login
> pw: none (just hit enter)
> 
> cvs -z3 -d:pserver:address@hidden:/cvsroot/paragui co -r
> devel-1-0 paragui
> 
> Thanks for the hint.

Well, it does still Segfault.
>From what i anderstand from the sources and the stack trace (not that
mutch, I'm affraid, for the moment :), it is the same problem as the
update thing, but with some mutex. I guess that a mutex is acquired by a
widget witch is destroyed when I update the content of the listbox. Then
afted event handling, the mutex should be released but the widget does
not exist anymore, so is the pointer to the mutex (am I right ?).
I am sorry to bother you with this, I wish I could solve it myself and
provide a patch but this library is rather big and dont anderstand it
fully yet.


here is a gdb output:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1024 (LWP 25518)]
0x402659f6 in PG_MessageObject::ProcessEvent (this=0x4109cf3c, 
    event=0xbffff6d0) at pgmessageobject.cpp:172
warning: Source file is more recent than executable.

172             SDL_mutexV(my_mutexReceiveMessage);
(gdb) p this
$1 = (PG_MessageObject *) 0x4109cf3c
(gdb) p *this
$2 = {static my_quitEventLoop = false, 
  static objectList = {<_Vector_base<PG_MessageObject
*,allocator<PG_MessageObject *> >> =
{<_Vector_alloc_base<PG_MessageObject *,allocator<PG_MessageObject
*>,true>> = {_M_start = 0x41140f00, _M_finish = 0x41140f28, 
        _M_end_of_storage = 0x41141000}, <No data fields>}, <No data
fields>}, 
  static captureObject = 0x0, my_mutexSendMessage = 0x0, 
  my_mutexReceiveMessage = 0x0, static inputFocusObject = 0x0, 
  static lastwidget = 0x0, my_oldCapture = 0x0, my_oldFocus = 0x0, 
  my_canReceiveMessages = true, _vptr.PG_MessageObject = 0x402b24a0}
(gdb) up
#1  0x40282d74 in PG_Widget::ProcessEvent (this=0x4109cf3c,
event=0xbffff6d0, 
    bModal=false) at pgwidget.cpp:544
warning: Source file is more recent than executable.

544             if(PG_MessageObject::ProcessEvent(event)) {
(gdb) p event
$3 = (SDL_Event *) 0xbffff6d0
(gdb) l
539                     }
540         }
541     
542             // let me see if i can process it myself
543     
544             if(PG_MessageObject::ProcessEvent(event)) {
545                     SDL_mutexV(my_internaldata->mutexProcess);
546                     return true;
547             }
548     

Ooops, I almost forgot the mandatory stack trace...

(gdb) where
#0  0x402659f6 in PG_MessageObject::ProcessEvent (this=0x4109cf3c, 
    event=0xbffff6d0) at pgmessageobject.cpp:172
#1  0x40282d74 in PG_Widget::ProcessEvent (this=0x4109cf3c,
event=0xbffff6d0, 
    bModal=false) at pgwidget.cpp:544
#2  0x40265d42 in PG_MessageObject::PumpIntoEventQueue
(event=0xbffff6d0)
    at pgmessageobject.cpp:355
#3  0x40259851 in PG_Application::RunEventLoop (data=0xbffff780)
    at pgapplication.cpp:197
#4  0x40259769 in PG_Application::Run (this=0xbffff780, threaded=false)
    at pgapplication.cpp:166
#5  0x0804b022 in main (argc=1, argv=0xbffff834) at viewcam.cc:36
#6  0x403a0280 in __libc_start_main () from /lib/libc.so.6










reply via email to

[Prev in Thread] Current Thread [Next in Thread]