oaf race conditions ...
- From: Michael Meeks <michael ximian com>
- To: Maciej Stachowiak <mjs eazel com>
- Cc: <gnome-components-list gnome org>
- Subject: oaf race conditions ...
- Date: Wed, 26 Sep 2001 00:37:55 -0400 (EDT)
Hi Maciej,
There seems to be a rather annoying oaf activation race still
occuring - I have the latest (HEAD) oafd installed, and if I do:
oaf-slay
test/oaf-run-query & test/oaf-run-query & test/oaf-run-query &
ps ax
12538 ? S 0:01 oafd --ac-activate --ior-output-fd=6
12541 ? S 0:01 oafd --ac-activate --ior-output-fd=6
12543 ? S 0:01 oafd --ac-activate --ior-output-fd=6
of course subsequent oaf-run-queries don't activate yet more oafs;
but ... this is really not good news, especialy at gnome-session startup
time where we can have a whole load of things batch forked.
I tried to verify the problem on HEAD bonobo-activation, but it
seems that running bonobo-activation-run-query crashes the
bonobo-activation server for reasons that are totaly opaque to me:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1024 (LWP 12731)]
0x40376caa in strcmp () from /lib/i686/libc.so.6
(gdb) bt
#0 0x40376caa in strcmp () from /lib/i686/libc.so.6
#1 0x0804d94c in qexp_evaluate_id (si=0x8086bc0, e=0x8083548,
qctx=0xbffff030) at activation-context-query.c:859
#2 0x0804de68 in qexp_evaluate (si=0x8086bc0, e=0x8083548,
qctx=0xbffff030) at activation-context-query.c:1107
#3 0x0804d386 in qexp_func_has (si=0x8086bc0, e=0x8083578,
qctx=0xbffff030) at activation-context-query.c:629
#4 0x0804d10a in qexp_evaluate_function (si=0x8086bc0, e=0x8083578,
qctx=0xbffff030) at activation-context-query.c:530
#5 0x0804de48 in qexp_evaluate (si=0x8086bc0, e=0x8083578,
qctx=0xbffff030) at activation-context-query.c:1101
#6 0x0804da8a in qexp_evaluate_binop (si=0x8086bc0, e=0x806a4e0,
qctx=0xbffff030) at activation-context-query.c:944
#7 0x0804de78 in qexp_evaluate (si=0x8086bc0, e=0x806a4e0,
qctx=0xbffff030) at activation-context-query.c:1110
#8 0x0804deee in qexp_matches (si=0x8086bc0, e=0x806a4e0,
qctx=0xbffff030) at activation-context-query.c:1136
#9 0x0804fdb0 in ac_query_run (servant=0x8069af8,
requirements=0x806a3ac "( repo_ids.has('IDL:Empty:1.0') ) AND (NOT
test_only.defined() OR NOT test_only)", selection_order=0x806a410,
ctx=0xbffff280, items=0xbffff090, ev=0xbffff360) at
activation-context-corba.c:383
#10 0x0805068f in impl_Bonobo_ActivationContext_query (_servant=0x8069af8,
requirements=0x806a3ac "( repo_ids.has('IDL:Empty:1.0') ) AND (NOT
test_only.defined() OR NOT test_only)", selection_order=0x806a410,
ctx=0xbffff280, ev=0xbffff360) at activation-context-corba.c:786
#11 0x4001f1b0 in _ORBIT_skel_small_Bonobo_ActivationContext_query
(_o_servant=0x8069af8, _o_retval=0xbffff27c, _o_args=0xbffff240,
_o_ctx=0xbffff280, _o_ev=0xbffff360, _impl_query=0x8050624
<impl_Bonobo_ActivationContext_query>) at
Bonobo_ActivationContext-skels.c:138
#12 0x4005071c in ORBit_POAObject_invoke (pobj=0x8069998, ret=0xbffff27c,
args=0xbffff240, ctx=0xbffff280, data=0xbffff2f8, ev=0xbffff360)
at poa.c:1005
#13 0x400522df in ORBit_OAObject_invoke (adaptor_obj=0x8069998,
ret=0xbffff27c, args=0xbffff240, ctx=0xbffff280, data=0xbffff2f8,
ev=0xbffff360)
at orbit-adaptor.c:81
#14 0x40045a9f in ORBit_small_invoke_adaptor (adaptor_obj=0x8069998,
recv_buffer=0x806f160, m_data=0x400282c0, data=0xbffff2f8, ev=0xbffff360)
at orbit-small.c:770
#15 0x40050af5 in ORBit_POAObject_handle_request (pobj=0x8069998,
opname=0x806f208 "query", ret=0x0, args=0x0, ctx=0x0,
recv_buffer=0x806f160,
ev=0xbffff360) at poa.c:1171
#16 0x40050d1d in ORBit_POA_handle_request (poa=0x805e798,
recv_buffer=0x806f160, objkey=0x806f178) at poa.c:1245
#17 0x4005226a in ORBit_handle_request (orb=0x805e748,
recv_buffer=0x806f160) at orbit-adaptor.c:44
#18 0x4003fdc6 in giop_connection_handle_input (lcnx=0x8085c10) at
giop-connection.c:154
#19 0x400684d6 in linc_connection_connected (gioc=0x8085c60,
condition=G_IO_IN, data=0x8085c10) at linc-connection.c:84
#20 0x401fb473 in g_io_unix_dispatch (source=0x8085d20,
callback=0x40068444 <linc_connection_connected>, user_data=0x8085c10) at
giounix.c:159
#21 0x401df61a in g_main_dispatch (context=0x805f820) at gmain.c:1616
#22 0x401dff49 in g_main_context_dispatch (context=0x805f820) at
gmain.c:2151
#23 0x401e02e4 in g_main_context_iterate (context=0x805f820, block=1,
dispatch=1, self=0x8094918) at gmain.c:2232
#24 0x401e098e in g_main_loop_run (loop=0x805f8b0) at gmain.c:2452
#25 0x08052436 in main (argc=2, argv=0xbffff6dc) at
activation-server-main.c:256
#26 0x4030e177 in __libc_start_main (main=0x8051fc0 <main>, argc=2,
ubp_av=0xbffff6dc, init=0x804bcf0 <_init>, fini=0x8054280 <_fini>,
rtld_fini=0x4000e184 <_dl_fini>, stack_end=0xbffff6cc) at
../sysdeps/generic/libc-start.c:129
(gdb) up
#1 0x0804d94c in qexp_evaluate_id (si=0x8086bc0, e=0x8083548,
qctx=0xbffff030) at activation-context-query.c:859
859 if (!strcmp
(gdb) l
854 else if (!g_ascii_strcasecmp (e->u.id_value,
"domain"))
855 retval.u.v_string = si->domain;
856 else {
857 int i;
858 for (i = 0; i < si->props._length; i++) {
859 if (!strcmp
860 (e->u.id_value,
861 si->props._buffer[i].name))
break;
862 }
863
(gdb) p *e
$1 = {type = EXPR_ID, u = {function_value = {func_name = 0x806f398
"repo_ids", arguments = 0x31363336}, var_value = 0x806f398 "repo_ids",
id_value = 0x806f398 "repo_ids", binop_value = {type = 134673304, op1
= 0x31363336, op2 = 0x34366336}, unop_value = {type = 134673304,
op = 0x31363336}, constant_value = {type = 134673304, u = {v_string
= 0x31363336 <Address 0x31363336 out of bounds>, v_stringv = 0x31363336,
v_number = 3.5665417897639486e-57, v_boolean = 825635638},
value_known = 54 '6', needs_free = 102 'f'}}, cached_value = {type =
959852854,
u = {v_string = 0x30306536 <Address 0x30306536 out of bounds>,
v_stringv = 0x30306536, v_number = 1.3980432860994536e-76, v_boolean =
808478006},
value_known = 50 '2', needs_free = 56 '8'}, has_fields = 1 '\001',
have_cached_value = 0 '\000'}
(gdb) p *si
$4 = {iid = 0x808743c "OAFIID:GNOME_Config_Daemon", server_type =
0x80699cc "exe", location_info = 0x80699dc "gconfd-2",
username = 0x8069a2c "michael", hostname = 0x80699f4
"localhost.localdomain", domain = 0x8069a14 "session", props = {_maximum =
0, _length = 1,
_buffer = 0x8069a40, _release = 0 '\000'}}
(gdb) p si->props->_buffer [0]
$7 = {name = 0x0, v = {_d = Bonobo_ACTIVATION_P_STRING, _u = {value_string
= 0x0, value_number = 0, value_boolean = 0 '\000', value_stringv = {
_maximum = 0, _length = 0, _buffer = 0x0, _release = 0 '\000'}}}}
ie. we're getting a Bonobo_ServerInfo node with properties with
NUILL name / values - which is killing us;
Any ideas ?
Michael.
--
mmeeks gnu org <><, Pseudo Engineer, itinerant idiot
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]