A list for the developers of CellML tools

Text archives Help


[cellml-dev] 64-bit version of Mozilla/CellML/PCEnv


Chronological Thread 
  • From: alan.garny at dpag.ox.ac.uk (Alan Garny)
  • Subject: [cellml-dev] 64-bit version of Mozilla/CellML/PCEnv
  • Date: Thu, 3 Jan 2008 13:54:10 -0000

> I don't think anyone has tried an IA64 / AMD64 builds of the entire
> PCEnv environment before, although I certainly have tried to follow good
> coding practices which don't assume endianness, sizes of pointers,
> etc... but may have made such assumptions inadvertently somewhere. The
> CellML API (but not PCEnv) gets automatically tested on AMD64.
>
> I think getting Mozilla to work on IA64 / AMD64 will probably require
> just require setting your .mozconfig appropriately to turn off parts
> like crashreporter which don't yet work on 64-bit platforms.

Hi Andrew,

I did as you suggested and disabled Crash Reporter. From there, I was able
to compile the Mozilla framework without any problem, so thanks for that! As
expected, the CellML DOM API compiled without any problem, while I could
only get PCEnv to compile fine by adding the "-fPIC" flag. It would be good
if you guys could check whether it works fine with 32-bit platforms (I have
committed my changes, but they are very much minimal so it would be easy to
revert anything I have done, should that be required).

At that stage, I had a version of PCEnv ready to be tested. It,
unfortunately, failed relatively quickly since I couldn't run any model at
all. The message I got was misleading and sent me in the wrong direction for
a few minutes, before I realised that the problem was with the CIS
(CISImplementation.cxx to be precise), which (obviously) didn't use the
"-fPIC" flag to compile the C version of a CellML file. The flag added, I
was able to recompile and run a model within PCEnv.

One thing remains to be looked at however. Indeed, when closing PCEnv, I get
a bunch of messages related to GTK:

---------------------------------------
(gecko:22766): Gdk-CRITICAL **: gdk_screen_get_display: assertion
`GDK_IS_SCREEN (screen)' failed

(gecko:22766): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(gecko:22766): GLib-GObject-CRITICAL **:
g_signal_handlers_disconnect_matched: assertion `G_TYPE_CHECK_INSTANCE
(instance)' failed

(gecko:22766): GLib-GObject-CRITICAL **: g_object_ref: assertion
`G_IS_OBJECT (object)' failed

(gecko:22766): Gdk-CRITICAL **: gdk_screen_get_display: assertion
`GDK_IS_SCREEN (screen)' failed

(gecko:22766): GLib-GObject-CRITICAL **: g_object_get_data: assertion
`G_IS_OBJECT (object)' failed

(gecko:22766): Gdk-CRITICAL **: gdk_screen_get_display: assertion
`GDK_IS_SCREEN (screen)' failed

(gecko:22766): GLib-GObject-CRITICAL **: g_object_get_data: assertion
`G_IS_OBJECT (object)' failed

(gecko:22766): Gdk-CRITICAL **: gdk_screen_get_display: assertion
`GDK_IS_SCREEN (screen)' failed

(gecko:22766): GLib-GObject-CRITICAL **: g_object_get_data: assertion
`G_IS_OBJECT (object)' failed

(gecko:22766): GLib-GObject-WARNING **:
/build/buildd/glib2.0-2.14.1/gobject/gsignal.c:2180: invalid unclassed
object pointer for value type `GdkScreen'

(gecko:22766): Gdk-CRITICAL **: gdk_screen_get_display: assertion
`GDK_IS_SCREEN (screen)' failed

(gecko:22766): GLib-GObject-CRITICAL **: g_object_get_data: assertion
`G_IS_OBJECT (object)' failed

(gecko:22766): GLib-GObject-WARNING **:
/build/buildd/glib2.0-2.14.1/gobject/gsignal.c:2180: invalid unclassed
object pointer for value type `GdkScreen'

(gecko:22766): GLib-GObject-CRITICAL **: g_object_unref: assertion
`G_IS_OBJECT (object)' failed
---------------------------------------

A bit of googling around taught me that this might be related to GTK not
being properly initialised. I therefore searched the Mozilla code and came
across nsAppRunner.cpp which makes a call to gtk_parse_args. It ought to be
enough, but it obviously isn't under x64. In fact, if I replace that call by
one to gtk_init_check, I then get fewer messages when closing PCEnv:

---------------------------------------
(gecko:10854): Gdk-CRITICAL **: gdk_screen_get_display: assertion
`GDK_IS_SCREEN (screen)' failed

(gecko:10854): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(gecko:10854): GLib-GObject-CRITICAL **:
g_signal_handlers_disconnect_matched: assertion `G_TYPE_CHECK_INSTANCE
(instance)' failed

(gecko:10854): GLib-GObject-CRITICAL **: g_object_ref: assertion
`G_IS_OBJECT (object)' failed

(gecko:10854): GLib-GObject-WARNING **:
/build/buildd/glib2.0-2.14.1/gobject/gsignal.c:2180: invalid unclassed
object pointer for value type `GdkScreen'

(gecko:10854): GLib-GObject-WARNING **:
/build/buildd/glib2.0-2.14.1/gobject/gsignal.c:2180: invalid unclassed
object pointer for value type `GdkScreen'

(gecko:10854): GLib-GObject-CRITICAL **: g_object_unref: assertion
`G_IS_OBJECT (object)' failed
---------------------------------------

At that point, I wasn't quite sure how to proceed, so I decided to stop
investigating, but it might be worth doing so at some point... I just hope
that this won't involve yet further customisations of the Mozilla
framework...

Alan.





Archive powered by MHonArc 2.6.18.

Top of page