Re: Lost Pointer when adding GTK+ to an application



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

-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]