Hi Andrew,<br><br> I show below a result of print.<br><br>1)print *iter<br>(gdb) print *iter<br>$1 = {offset = 2, hash = 0x12aa7ec0, values = 0x7fff1568e580}<br>-----<br><br>2)print *values<br>(gdb) print *values<br>$2 = {data = 0x7fff1568e5c0, next = 0x2b247ebb85a1, prev = 0x1}<br>
-----<br><br>Regards,<br>Tomo<br><br><div class="gmail_quote">2010/11/12 Andrew Beekhof <span dir="ltr"><<a href="mailto:andrew@beekhof.net">andrew@beekhof.net</a>></span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">On Thu, Nov 11, 2010 at 3:50 PM, nozawat <<a href="mailto:nozawat@gmail.com">nozawat@gmail.com</a>> wrote:<br>
> Hi Andrew<br>
><br>
</div><div class="im">>  Sorry,pengine output a core.<br>
<br>
</div>could you go up to frame #1 and run:<br>
print *iter<br>
print *values<br>
<div><div></div><div class="h5"><br>
><br>
> -----<br>
> gdb) where<br>
> #0  0x00002b247fa8b53a in g_list_nth_data () from /lib64/libglib-2.0.so.0<br>
> #1  0x00002b247ebc5027 in g_hash_table_iter_next (iter=0x7fff1568e4c0,<br>
> key=0x0, value=0x7fff1568e4e0)<br>
>     at ../include/crm/common/util.h:<br>
> 348<br>
> #2  0x00002b247ebc9301 in native_rsc_location (rsc=0x12aa9cc0,<br>
> constraint=0x12af5480) at native.c:1215<br>
> #3  0x00002b247ebcf56c in group_rsc_location (rsc=0x12aa9cc0,<br>
> constraint=0x12af5480) at group.c:421<br>
> #4  0x00002b247ebb85a1 in apply_placement_constraints<br>
> (data_set=0x7fff1568e6b0) at allocate.c:523<br>
> #5  0x00002b247ebb96f6 in stage2 (data_set=0x7fff1568e6b0) at allocate.c:872<br>
> #6  0x00002b247ebb6754 in do_calculations (data_set=0x7fff1568e6b0,<br>
> xml_input=0x1295ec90, now=0x0)<br>
>     at pengine.c:262<br>
> #7  0x00002b247ebb5d3e in process_pe_message (msg=0x12941e60,<br>
> xml_data=0x1295a610, sender=0x12940ac0)<br>
>     at pengine.c:124<br>
> #8  0x0000000000401265 in pe_msg_callback (client=0x12940ac0, user_data=0x0)<br>
> at main.c:60<br>
> #9  0x00002b247f634b97 in G_CH_dispatch_int (source=0x1293fd80, callback=0,<br>
> user_data=0x0) at GSource.c:637<br>
> #10 0x00002b247fa8ddb4 in g_main_context_dispatch () from<br>
> /lib64/libglib-2.0.so.0<br>
> #11 0x00002b247fa90c0d in ?? () from /lib64/libglib-2.0.so.0<br>
> #12 0x00002b247fa90f1a in g_main_loop_run () from /lib64/libglib-2.0.so.0<br>
> #13 0x000000000040186f in main (argc=1, argv=0x7fff1568eb48) at main.c:177<br>
> (gdb)<br>
><br>
> ------<br>
><br>
> Regards,<br>
> Tomo<br>
><br>
><br>
><br>
><br>
> 2010/11/11 Andrew Beekhof <<a href="mailto:andrew@beekhof.net">andrew@beekhof.net</a>><br>
>><br>
>> On Thu, Nov 11, 2010 at 12:31 PM, nozawat <<a href="mailto:nozawat@gmail.com">nozawat@gmail.com</a>> wrote:<br>
>> > Hi Andrew,<br>
>> ><br>
>> >  I ran it. However, an error has been output.<br>
>> >  Probably I have a feeling that glib does not move well.<br>
>> >  I attached ha-log.<br>
>> ><br>
>> >  I feel like cannot read a library well.<br>
>> >  It is contents of core as follows.<br>
>><br>
>> you'll need the debuginfo package installed<br>
>><br>
>> > ----<br>
>> > $ gdb /usr/sbin/corosync core.27920<br>
>> > GNU gdb Fedora (6.8-37.el5)<br>
>> > Copyright (C) 2008 Free Software Foundation, Inc.<br>
>> > License GPLv3+: GNU GPL version 3 or later<br>
>> > <<a href="http://gnu.org/licenses/gpl.html" target="_blank">http://gnu.org/licenses/gpl.html</a>><br>
>> > This is free software: you are free to change and redistribute it.<br>
>> > There is NO WARRANTY, to the extent permitted by law.  Type "show<br>
>> > copying"<br>
>> > and "show warranty" for details.<br>
>> > This GDB was configured as "x86_64-redhat-linux-gnu"...<br>
>> ><br>
>> > warning: core file may not match specified executable file.<br>
>> > Core was generated by `/usr/lib64/heartbeat/pengine'.<br>
>> > Program terminated with signal 11, Segmentation fault.<br>
>> > [New process 27920]<br>
>> > #0  0x00002b247fa8b53a in ?? ()<br>
>> > (gdb) where<br>
>> > #0  0x00002b247fa8b53a in ?? ()<br>
>> > #1  0x00002b247ebc5027 in ?? ()<br>
>> > #2  0x0000000000000000 in ?? ()<br>
>> > ------<br>
>> ><br>
>> > Regards,<br>
>> > Tomo<br>
>> ><br>
>> > 2010/11/11 Andrew Beekhof <<a href="mailto:andrew@beekhof.net">andrew@beekhof.net</a>><br>
>> >><br>
>> >> On Thu, Nov 11, 2010 at 10:26 AM, nozawat <<a href="mailto:nozawat@gmail.com">nozawat@gmail.com</a>> wrote:<br>
>> >> > Hi Andrew,<br>
>> >> ><br>
>> >> >  Thanks for a revision.<br>
>> >> >  I confirmed completion of compiling it.<br>
>> >> >  I revised it a little, I attach a patch.<br>
>> >><br>
>> >> Thanks!  Did you try running it?<br>
>> >><br>
>> >> ><br>
>> >> > Regards,<br>
>> >> > Tomo<br>
>> >> ><br>
>> >> ><br>
>> >> > 2010/11/11 Andrew Beekhof <<a href="mailto:andrew@beekhof.net">andrew@beekhof.net</a>><br>
>> >> >><br>
>> >> >> This might be a little better:<br>
>> >> >><br>
>> >> >> diff -r dd75da218e4f <a href="http://configure.ac" target="_blank">configure.ac</a><br>
>> >> >> --- a/<a href="http://configure.ac" target="_blank">configure.ac</a>      Fri Oct 29 12:12:45 2010 +0200<br>
>> >> >> +++ b/<a href="http://configure.ac" target="_blank">configure.ac</a>      Tue Nov 09 13:20:55 2010 +0100<br>
>> >> >> @@ -654,7 +654,7 @@ AC_MSG_RESULT(using $GLIBCONFIG)<br>
>> >> >><br>
>> >> >>  AC_CHECK_LIB(glib-2.0, g_hash_table_get_values)<br>
>> >> >>  if test "x$ac_cv_lib_glib_2_0_g_hash_table_get_values" != x""yes;<br>
>> >> >> then<br>
>> >> >> -   AC_MSG_ERROR(Your version of Glib is too old, you need at least<br>
>> >> >> 2.14)<br>
>> >> >> +   AC_MSG_WARN(Your version of Glib is too old, you should have at<br>
>> >> >> least<br>
>> >> >> 2.14)<br>
>> >> >>  fi<br>
>> >> >><br>
>> >> >>  #<br>
>> >> >> diff -r dd75da218e4f include/crm/common/util.h<br>
>> >> >> --- a/include/crm/common/util.h Fri Oct 29 12:12:45 2010 +0200<br>
>> >> >> +++ b/include/crm/common/util.h Tue Nov 09 13:20:55 2010 +0100<br>
>> >> >> @@ -298,4 +298,59 @@ extern int node_score_infinity;<br>
>> >> >>  extern xmlNode *create_operation_update(xmlNode *parent, lrm_op_t<br>
>> >> >> *op, const char *caller_version, int target_rc, const char *origin,<br>
>> >> >> int level);<br>
>> >> >>  extern void free_lrm_op(lrm_op_t *op);<br>
>> >> >><br>
>> >> >> +#if HAVE_LIBGLIB_2_0<br>
>> >> >> +<br>
>> >> >> +#else<br>
>> >> >> +<br>
>> >> >> +typedef struct fake_ghi<br>
>> >> >> +{<br>
>> >> >> +       int         offset;<br>
>> >> >> +       GHashTable *hash;<br>
>> >> >> +       GList      *values;<br>
>> >> >> +<br>
>> >> >> +} GHashTableIter;<br>
>> >> >> +<br>
>> >> >> +static inline void g_hash_append_value(gpointer key, gpointer<br>
>> >> >> value,<br>
>> >> >> gpointer user_data)<br>
>> >> >> +{<br>
>> >> >> +    GList **values = (GList **)user_data;<br>
>> >> >> +    *values = g_list_append(*values, value);<br>
>> >> >> +}<br>
>> >> >> +<br>
>> >> >> +static inline GList *g_hash_table_get_values(GHashTable<br>
>> >> >> *hash_table);<br>
>> >> >> +{<br>
>> >> >> +    GList *values = NULL;<br>
>> >> >> +    g_hash_table_foreach(hash_table, g_hash_append_value, &values);<br>
>> >> >> +}<br>
>> >> >> +<br>
>> >> >> +static inline void g_hash_table_iter_init(GHashTableIter *iter,<br>
>> >> >> GHashTable *hash_table)<br>
>> >> >> +{<br>
>> >> >> +    iter->offset = 0;<br>
>> >> >> +    iter->hash = hash_table;<br>
>> >> >> +<br>
>> >> >> +    /* iter->values = g_hash_table_get_values(hash_table); */<br>
>> >> >> +<br>
>> >> >> +    /* We could cache the values, but then we need to clean up the<br>
>> >> >> list<br>
>> >> >> +     * later which doesn't fit the glib2 API<br>
>> >> >> +     * So instead we calculate it in _next() every time its needed<br>
>> >> >> +     */<br>
>> >> >> +}<br>
>> >> >> +<br>
>> >> >> +<br>
>> >> >> +static inline gboolean g_hash_table_iter_next(GHashTableIter *iter,<br>
>> >> >> gpointer *key, gpointer *value)<br>
>> >> >> +{<br>
>> >> >> +    GList *values = iter->values;<br>
>> >> >> +    if(iter->values == NULL) {<br>
>> >> >> +       values = g_hash_table_get_values(iter->hash_table);<br>
>> >> >> +    }<br>
>> >> >> +<br>
>> >> >> +    iter->offset++;<br>
>> >> >> +    *value = g_list_nth_data(values, iter->offset);<br>
>> >> >> +<br>
>> >> >> +    if(iter->values == NULL) {<br>
>> >> >> +       g_list_free(values);<br>
>> >> >> +    }<br>
>> >> >> +    return (*value) != NULL;<br>
>> >> >> +}<br>
>> >> >> +<br>
>> >> >>  #endif<br>
>> >> >> +<br>
>> >> >> +#endif<br>
>> >> >><br>
>> >> >> _______________________________________________<br>
>> >> >> Pacemaker mailing list: <a href="mailto:Pacemaker@oss.clusterlabs.org">Pacemaker@oss.clusterlabs.org</a><br>
>> >> >> <a href="http://oss.clusterlabs.org/mailman/listinfo/pacemaker" target="_blank">http://oss.clusterlabs.org/mailman/listinfo/pacemaker</a><br>
>> >> >><br>
>> >> >> Project Home: <a href="http://www.clusterlabs.org" target="_blank">http://www.clusterlabs.org</a><br>
>> >> >> Getting started:<br>
>> >> >> <a href="http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf" target="_blank">http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf</a><br>
>> >> >> Bugs:<br>
>> >> >><br>
>> >> >><br>
>> >> >> <a href="http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker" target="_blank">http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker</a><br>
>> >> ><br>
>> >> ><br>
>> >> > _______________________________________________<br>
>> >> > Pacemaker mailing list: <a href="mailto:Pacemaker@oss.clusterlabs.org">Pacemaker@oss.clusterlabs.org</a><br>
>> >> > <a href="http://oss.clusterlabs.org/mailman/listinfo/pacemaker" target="_blank">http://oss.clusterlabs.org/mailman/listinfo/pacemaker</a><br>
>> >> ><br>
>> >> > Project Home: <a href="http://www.clusterlabs.org" target="_blank">http://www.clusterlabs.org</a><br>
>> >> > Getting started:<br>
>> >> > <a href="http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf" target="_blank">http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf</a><br>
>> >> > Bugs:<br>
>> >> ><br>
>> >> ><br>
>> >> > <a href="http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker" target="_blank">http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker</a><br>
>> >> ><br>
>> >> ><br>
>> >><br>
>> >> _______________________________________________<br>
>> >> Pacemaker mailing list: <a href="mailto:Pacemaker@oss.clusterlabs.org">Pacemaker@oss.clusterlabs.org</a><br>
>> >> <a href="http://oss.clusterlabs.org/mailman/listinfo/pacemaker" target="_blank">http://oss.clusterlabs.org/mailman/listinfo/pacemaker</a><br>
>> >><br>
>> >> Project Home: <a href="http://www.clusterlabs.org" target="_blank">http://www.clusterlabs.org</a><br>
>> >> Getting started:<br>
>> >> <a href="http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf" target="_blank">http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf</a><br>
>> >> Bugs:<br>
>> >><br>
>> >> <a href="http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker" target="_blank">http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker</a><br>
>> ><br>
>> ><br>
>> > _______________________________________________<br>
>> > Pacemaker mailing list: <a href="mailto:Pacemaker@oss.clusterlabs.org">Pacemaker@oss.clusterlabs.org</a><br>
>> > <a href="http://oss.clusterlabs.org/mailman/listinfo/pacemaker" target="_blank">http://oss.clusterlabs.org/mailman/listinfo/pacemaker</a><br>
>> ><br>
>> > Project Home: <a href="http://www.clusterlabs.org" target="_blank">http://www.clusterlabs.org</a><br>
>> > Getting started: <a href="http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf" target="_blank">http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf</a><br>
>> > Bugs:<br>
>> ><br>
>> > <a href="http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker" target="_blank">http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker</a><br>
>> ><br>
>> ><br>
>><br>
>> _______________________________________________<br>
>> Pacemaker mailing list: <a href="mailto:Pacemaker@oss.clusterlabs.org">Pacemaker@oss.clusterlabs.org</a><br>
>> <a href="http://oss.clusterlabs.org/mailman/listinfo/pacemaker" target="_blank">http://oss.clusterlabs.org/mailman/listinfo/pacemaker</a><br>
>><br>
>> Project Home: <a href="http://www.clusterlabs.org" target="_blank">http://www.clusterlabs.org</a><br>
>> Getting started: <a href="http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf" target="_blank">http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf</a><br>
>> Bugs:<br>
>> <a href="http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker" target="_blank">http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker</a><br>
><br>
><br>
> _______________________________________________<br>
> Pacemaker mailing list: <a href="mailto:Pacemaker@oss.clusterlabs.org">Pacemaker@oss.clusterlabs.org</a><br>
> <a href="http://oss.clusterlabs.org/mailman/listinfo/pacemaker" target="_blank">http://oss.clusterlabs.org/mailman/listinfo/pacemaker</a><br>
><br>
> Project Home: <a href="http://www.clusterlabs.org" target="_blank">http://www.clusterlabs.org</a><br>
> Getting started: <a href="http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf" target="_blank">http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf</a><br>
> Bugs:<br>
> <a href="http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker" target="_blank">http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker</a><br>
><br>
><br>
<br>
_______________________________________________<br>
Pacemaker mailing list: <a href="mailto:Pacemaker@oss.clusterlabs.org">Pacemaker@oss.clusterlabs.org</a><br>
<a href="http://oss.clusterlabs.org/mailman/listinfo/pacemaker" target="_blank">http://oss.clusterlabs.org/mailman/listinfo/pacemaker</a><br>
<br>
Project Home: <a href="http://www.clusterlabs.org" target="_blank">http://www.clusterlabs.org</a><br>
Getting started: <a href="http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf" target="_blank">http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf</a><br>
Bugs: <a href="http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker" target="_blank">http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker</a><br>
</div></div></blockquote></div><br>