Skip site navigation (1)Skip section navigation (2)
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>