midgardproject / midgard-core

The base library of the Midgard Content Repository
http://midgard-project.org/docs/
Other
37 stars 6 forks source link

Error when loading certain content objects #195

Open flack opened 11 years ago

flack commented 11 years ago

I'm experimenting with porting mgd1 databases to mgd2, and have it more or less running, but when I access certain objects (f.x. browse to them on-site or in Asgard), all I get is a blank page and this in apache's error.log:

ERROR:gda-mutex.c:192:gda_mutex_unlock: assertion failed: (th == mutex->owner)
[Wed Feb 27 15:07:12 2013] [notice] child pid 432 exit signal Aborted (6)

Like I said, the database is migrated from mgd1, so it might that it is somehow inconsistent, but I'm not exactly sure where I should start with debugging. Is there any way to get more useful debug information on this? Right now, the object I'm trying to load is a midgard_article. Another midgard_article in the same topic loads without problems, but this one fails for some reason.

I'm not sure if this is related, but I also get fatal errors from this object when trying to retrieve it from memcache:

Fatal error: Underlying object is not GObject
piotras commented 11 years ago

Abort signal might be debuged either with gdb (gdb --args apache -X) or with valgrind (valgrind -v --log-file=my.log apache). Underlying object error might be caused by anything, including memcache, xdebug, midgard php extension.

flack commented 11 years ago

I did some debugging now and it looks like the sigabort comes from serializing mgd objects. I can reproduce it with:

serialize(new midgard_topic);

on PHP 5.3.3. The machine doesn't have debugging facilities installed, but if necessary, I can try to reproduce the issue in my VM tonight or so.

piotras commented 11 years ago

Try: create new instance and then serialize, disable gdathreads in configuration file (it's enabled by default).

flack commented 11 years ago

just a small update: I haven't gotten around to doing the valgrind thing yet, but I just looked on my server, and it seems that gdathreads is is disabled already, at least I have GdaThreads=false in /etc/midgard2/conf.d/db_name.