Date: Mon, 17 Apr 2006 14:45:09 -0700 From: "Pascal Hofstee" <caelian@gmail.com> To: gnome@freebsd.org Subject: gnome-session [mc-gnome] on amd64 problems. Message-ID: <d8a0b7620604171445h5d5b4b8bnfd6577dcc0cdfb12@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hi, It looks like i stumbled across some pointer-truncation in the current MC-gnome gnome-session port on amd64. I'll try to outline the problem as i understand it below .. any assistence here would be appreciated. in ${WORKDIR}/gnome-session/gsm-xrandr.c there's a function called "gsm_set_display_properties" at line 134 the following call get's made: client =3D gsm_get_conf_client (); client is defined in the function definition as GConfClient *client; (this definition is inside an #ifdef HAVE_RANDR .. i have tried moving it outside the ifdef to no avail though). I have stepped through the gsm_get_conf_client() call in a gdb session .. and everything seems to be alright including the function's return call. Th= e function tries to return a valid 64-bit pointer. However .. immediately after the assignment has been done. client now point= s to a (truncated) 32-bit address. This obviously causes a problem whenever client is used to get any gconf data, which in turn causes gnome-session to segfault. My first guess is that somehow the storagesize/datatype for GConfClient is being obscured causing the compiler to default it to a 32bit integer, which would explain the sudden pointer truncation upon assignment. I currently do not have an actual backtrace available .. as i am not writin= g this on my FreeBSD system. If anybody has any idea why the pointer gets truncated to 32bit in this case, please enlighten me so i can try to test potential fixes. -- Pascal Hofstee
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?d8a0b7620604171445h5d5b4b8bnfd6577dcc0cdfb12>