Subject: Re: Accessing global variables causes segfault
From: David Means <[email-masked]>
To: [email-masked]
Date: 22 Feb 2003 10:58:12 -0500

One problem is that 'myglobal' is a pointer to an int, but the int is
never defined, and hence, you're assigning a value to a pointer that
points no where.

It's very common for things like this to work on one platform, but not
another.

On Sat, 2003-02-22 at 00:21, Steve Baldwin wrote:

> I'm having some (further) issues porting some Unix code to cygwin.  I
> have a
> scenario where there are global variables defined in a shared library,
> and referenced in the executable.  See the example below.  Yes I know
> it's bad coding practice, but I'm hoping to port the code with the least
> amount of re-writing as possible.  It works fine under Unix, but as you
> can see from below, doesn't play well under cygwin.  Is there anything
> I can do - apart from the obvious re-write.
> 
> Cheers,
> 
> Steve
> 
> [cdev]$ cat a.c
> #include <stdio.h>
> #include <stdlib.h>
> extern void fx (void) ;
> extern int myglobal ;
> 
> int
> main (int argc, char **argv) {
>         myglobal = 99 ;
>         fx () ;
> }
> [cdev]$ cat b.c
> #include <stdio.h>
> 
> int             *myglobal ;
> 
> void
> fx (void)
> {
>         printf("here i am : myglobal = %d\n", myglobal) ;
> }
> [cdev]$ gcc b.c -o libb.dll -shared
> [cdev]$ gcc a.c -o a -L. -lb
> [cdev]$ a
> Segmentation fault (core dumped)
> 
> 
> --
> Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
> Bug reporting:         http://cygwin.com/bugs.html
> Documentation:         http://cygwin.com/docs.html
> FAQ:                   http://cygwin.com/faq/

-- 
David Means

Different all twisty a of in maze are you, passages little.