gnome-session [mc-gnome] on amd64 problems.

Pascal Hofstee caelian at gmail.com
Mon Apr 17 21:45:10 UTC 2006


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 = 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. The
function tries to return a valid 64-bit pointer.

However .. immediately after the assignment has been done. client now points
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 writing
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


More information about the freebsd-gnome mailing list