Re: Lost Pointer when adding GTK+ to an application





On Wed, 2008-05-07 at 21:02 -0600, Diego Rivera wrote:
Thanks for the quick answer, however, the GTK+ component is the same
process as the Console application. The console application checks for
some arguments and finishes by calling the working function of the
application with parameters that reflect the arguments received from
the console. My GtkButton callback just calls this last function with
some parameters i have selected. 

So no inter-process communication is requiered

Thanks for the suggestion anyway

OK, then you need to post some relevant portion of the code if possible.
These type of issues can be as casued by simple things like - using
local stack memory for structures vs malloc or g_new0() memory for them.

Post your main() and the callback for us to look at.  And please do
consider the valgrind suggestion, or retry the gdb exercise.

James,

-Diego--

On Wed, May 7, 2008 at 8:55 PM, James Scott Jr <skoona verizon net>
wrote:
        
        
        
        On Wed, 2008-05-07 at 20:33 -0600, Diego Rivera wrote:
        > Hi! I am not exactly new to GTK+, however I have come across
        a problem i
        > have no explanation for, and I'll be glad if someone could
        point me towards
        > a possible solution.
        >
        > I am currently developing an application that uses various
        algorithms for
        > sequence alignment in biological applications (DNA, RNA,
        Proteins and so
        > on). This application is mainly for scientific purposes.
        >
        > The core algorithms are already running fine as a console
        application in a
        > very stable version. I am working in adding some graphical
        interface to the
        > program using GTK+. So, I built a little Window that asks
        for the different
        > parameters and makes a call to the already defined functions
        in the console
        > application, which are indeed stable. However, when making
        the call to the
        > algorithm with GTK+ running, some of the pointers in my data
        structures get
        > lost, and I just get a Segmentation Fault.
        >
        > While trying to debug this weird behavior, I have narrowed
        the problem to
        > the fact of having a window running.
        >
        > Right now, I just have a main that creates a GtkWindow with
        a GtkButton, and
        > the callback of the button calls the stable routine of the
        console
        > application using some "hard-wired" parameters. I have made
        tests and the
        > console application gives the correct answer for those
        parameters. However,
        > when calling the routine from the callback, Segmentation
        Fault is the only
        > result I have been able to get.
        >
        > I have tried with different versions of GTK+ and the outcome
        is persistent.
        >
        > The data structure of the console application looks
        something like this:
        >
        > typedef struct{
        >     int length;
        >     char* seq;
        > }sequence_t;
        >
        > typedef struct{
        >     int n;
        >     int m;
        >     int** table;
        > }table_t;
        >
        > typedef struct{
        >     sequence_t* vp;
        >     sequence_t* wp;
        >     table_t* table;
        >     int scoring;
        >     int result;
        > }alignment_t;
        >
        > Using gdb i have found that the Segmentation Fault occurs at
        some point when
        > accesing the table from the alignment.
        >
        > I believe i have made no memory errors in my console
        application, since it
        > runs ok every time. However, i haven't seen the correct
        output from my GTK
        > application.
        >
        > Is there any hint that you could give me in order to correct
        the error?
        >
        
        How did you add the GTK component to the existing console app;
        are they
        one process or two?
        
        Your segfault suggest that they are two separate processes.
         In which
        case attempting to share memory elements will cause a segfault
        every
        time no matter how correct and hard-coded the structures.
        
        You may need to consider designing in and using some type of
        IPC
        (Inter-Process Communications) like a named-pipe,
        shared-memory, socket
        communications, memory queue, etc.  Something designed to
        communicate
        between two active processes.
        
        James,
        
        
        > Thanks
        > - Diego Rivera -
        > _______________________________________________
        > gtk-app-devel-list mailing list
        > gtk-app-devel-list gnome org
        > http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
        
        





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