[Pacemaker] [Problem]When Pacemaker uses a new version of glib, g_source_remove fails.
renayama19661014 at ybb.ne.jp
renayama19661014 at ybb.ne.jp
Mon Oct 13 23:45:23 UTC 2014
Hi Andrew,
The problem was settled with your patch.
Please merge a patch into master.
Please confirm whether there is not a problem in other points either concerning g_timeout_add() and g_source_remove() if possible.
Many Thanks!
Hideo Yamauchi.
----- Original Message -----
> From: "renayama19661014 at ybb.ne.jp" <renayama19661014 at ybb.ne.jp>
> To: The Pacemaker cluster resource manager <pacemaker at oss.clusterlabs.org>
> Cc:
> Date: 2014/10/10, Fri 15:34
> Subject: Re: [Pacemaker] [Problem]When Pacemaker uses a new version of glib, g_source_remove fails.
>
> Hi Andrew,
>
> Thank you for comments.
>
>> diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c
>> index 961ff18..2279e4e 100644
>> --- a/lib/services/services_linux.c
>> +++ b/lib/services/services_linux.c
>> @@ -227,6 +227,7 @@ recurring_action_timer(gpointer data)
>> op->stdout_data = NULL;
>> free(op->stderr_data);
>> op->stderr_data = NULL;
>> + op->opaque->repeat_timer = 0;
>>
>> services_action_async(op, NULL);
>> return FALSE;
>
>
> I confirm a correction again.
>
>
>
> Many Thanks!
> Hideo Yamauchi.
>
>
>
> ----- Original Message -----
>> From: Andrew Beekhof <andrew at beekhof.net>
>> To: renayama19661014 at ybb.ne.jp; The Pacemaker cluster resource manager
> <pacemaker at oss.clusterlabs.org>
>> Cc:
>> Date: 2014/10/10, Fri 15:19
>> Subject: Re: [Pacemaker] [Problem]When Pacemaker uses a new version of
> glib, g_source_remove fails.
>>
>> /me slaps forhead
>>
>> this one should work
>>
>> diff --git a/lib/services/services.c b/lib/services/services.c
>> index 8590b56..753e257 100644
>> --- a/lib/services/services.c
>> +++ b/lib/services/services.c
>> @@ -313,6 +313,7 @@ services_action_free(svc_action_t * op)
>>
>> if (op->opaque->repeat_timer) {
>> g_source_remove(op->opaque->repeat_timer);
>> + op->opaque->repeat_timer = 0;
>> }
>> if (op->opaque->stderr_gsource) {
>> mainloop_del_fd(op->opaque->stderr_gsource);
>> @@ -425,6 +426,7 @@ services_action_kick(const char *name, const char
> *action,
>> int interval /* ms */
>> } else {
>> if (op->opaque->repeat_timer) {
>> g_source_remove(op->opaque->repeat_timer);
>> + op->opaque->repeat_timer = 0;
>> }
>> recurring_action_timer(op);
>> return TRUE;
>> @@ -459,6 +461,7 @@ handle_duplicate_recurring(svc_action_t * op, void
>> (*action_callback) (svc_actio
>> if (dup->pid != 0) {
>> if (op->opaque->repeat_timer) {
>> g_source_remove(op->opaque->repeat_timer);
>> + op->opaque->repeat_timer = 0;
>> }
>> recurring_action_timer(dup);
>> }
>> diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c
>> index 961ff18..2279e4e 100644
>> --- a/lib/services/services_linux.c
>> +++ b/lib/services/services_linux.c
>> @@ -227,6 +227,7 @@ recurring_action_timer(gpointer data)
>> op->stdout_data = NULL;
>> free(op->stderr_data);
>> op->stderr_data = NULL;
>> + op->opaque->repeat_timer = 0;
>>
>> services_action_async(op, NULL);
>> return FALSE;
>>
>>
>> On 10 Oct 2014, at 4:45 pm, renayama19661014 at ybb.ne.jp wrote:
>>
>>> Hi Andrew,
>>>
>>> I applied three corrections that you made and checked movement.
>>> I picked all "abort" processing with g_source_remove() of
>> services.c just to make sure.
>>> * I set following "abort" in four places that carried out
>> g_source_remove
>>>
>>>>>> if
> (g_source_remove(op->opaque->repeat_timer) ==
>> FALSE)
>>>> {
>>>>>> abort();
>>>>>> }
>>>
>>>
>>> As a result, "abort" still occurred.
>>>
>>>
>>> The problem does not seem to be yet settled by your correction.
>>>
>>>
>>> (gdb) where
>>> #0 0x00007fdd923e1f79 in __GI_raise (sig=sig at entry=6) at
>> ../nptl/sysdeps/unix/sysv/linux/raise.c:56
>>> #1 0x00007fdd923e5388 in __GI_abort () at abort.c:89
>>> #2 0x00007fdd92b9fe77 in crm_abort (file=file at entry=0x7fdd92bd352b
>> "logging.c",
>>> function=function at entry=0x7fdd92bd48c0 <__FUNCTION__.23262>
>> "crm_glib_handler", line=line at entry=73,
>>> assert_condition=assert_condition at entry=0xe20b80 "Source ID
> 40 was
>> not found when attempting to remove it", do_core=do_core at entry=1,
>>> do_fork=<optimized out>, do_fork at entry=1) at utils.c:1195
>>> #3 0x00007fdd92bc7ca7 in crm_glib_handler (log_domain=0x7fdd92130b6e
>> "GLib", flags=<optimized out>,
>>> message=0xe20b80 "Source ID 40 was not found when attempting
> to
>> remove it", user_data=<optimized out>) at logging.c:73
>>> #4 0x00007fdd920f2ae1 in g_logv () from
>> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>>> #5 0x00007fdd920f2d72 in g_log () from
>> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>>> #6 0x00007fdd920eac5c in g_source_remove () from
>> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>>> #7 0x00007fdd92984b55 in cancel_recurring_action
> (op=op at entry=0xe19b90) at
>> services.c:365
>>> #8 0x00007fdd92984bee in services_action_cancel
> (name=name at entry=0xe1d2d0
>> "dummy2", action=<optimized out>,
> interval=interval at entry=10000)
>>> at services.c:387
>>> #9 0x000000000040405a in cancel_op (rsc_id=rsc_id at entry=0xe1d2d0
>> "dummy2", action=action at entry=0xe10d90 "monitor",
>> interval=10000)
>>> at lrmd.c:1404
>>> #10 0x000000000040614f in process_lrmd_rsc_cancel (client=0xe17290,
> id=74,
>> request=0xe1be10) at lrmd.c:1468
>>> #11 process_lrmd_message (client=client at entry=0xe17290, id=74,
>> request=request at entry=0xe1be10) at lrmd.c:1507
>>> #12 0x0000000000402bac in lrmd_ipc_dispatch (c=0xe169c0,
> data=<optimized
>> out>, size=361) at main.c:148
>>> #13 0x00007fdd91e4d4d9 in qb_ipcs_dispatch_connection_request () from
>> /usr/lib/libqb.so.0
>>> #14 0x00007fdd92bc409d in gio_read_socket (gio=<optimized out>,
>> condition=G_IO_IN, data=0xe158a8) at mainloop.c:437
>>> #15 0x00007fdd920ebce5 in g_main_context_dispatch () from
>> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>>> ---Type <return> to continue, or q <return> to quit---
>>> #16 0x00007fdd920ec048 in ?? () from
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>>> #17 0x00007fdd920ec30a in g_main_loop_run () from
>> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>>> #18 0x0000000000402774 in main (argc=<optimized out>,
>> argv=0x7fff22cac268) at main.c:344
>>>
>>> Best Regards,
>>> Hideo Yamauchi.
>>>
>>>
>>> ----- Original Message -----
>>>> From: "renayama19661014 at ybb.ne.jp"
>> <renayama19661014 at ybb.ne.jp>
>>>> To: Andrew Beekhof <andrew at beekhof.net>; The Pacemaker
> cluster
>> resource manager <pacemaker at oss.clusterlabs.org>
>>>> Cc:
>>>> Date: 2014/10/10, Fri 10:55
>>>> Subject: Re: [Pacemaker] [Problem]When Pacemaker uses a new
> version of
>> glib, g_source_remove fails.
>>>>
>>>> Hi Andrew,
>>>>
>>>> Okay!
>>>>
>>>> I test your patch.
>>>> And I inform you of a result.
>>>>
>>>> Many thanks!
>>>> Hideo Yamauchi.
>>>>
>>>>
>>>>
>>>> ----- Original Message -----
>>>>> From: Andrew Beekhof <andrew at beekhof.net>
>>>>> To: renayama19661014 at ybb.ne.jp; The Pacemaker cluster resource
>
>> manager
>>>> <pacemaker at oss.clusterlabs.org>
>>>>> Cc:
>>>>> Date: 2014/10/10, Fri 10:47
>>>>> Subject: Re: [Pacemaker] [Problem]When Pacemaker uses a new
> version
>> of
>>>> glib, g_source_remove fails.
>>>>>
>>>>> Perfect!
>>>>>
>>>>> Can you try this:
>>>>>
>>>>> diff --git a/lib/services/services.c b/lib/services/services.c
>>>>> index 8590b56..cb0f0ae 100644
>>>>> --- a/lib/services/services.c
>>>>> +++ b/lib/services/services.c
>>>>> @@ -417,6 +417,7 @@ services_action_kick(const char *name,
> const
>> char
>>>> *action,
>>>>> int interval /* ms */
>>>>> free(id);
>>>>>
>>>>> if (op == NULL) {
>>>>> + op->opaque->repeat_timer = 0;
>>>>> return FALSE;
>>>>> }
>>>>>
>>>>> @@ -425,6 +426,7 @@ services_action_kick(const char *name,
> const
>> char
>>>> *action,
>>>>> int interval /* ms */
>>>>> } else {
>>>>> if (op->opaque->repeat_timer) {
>>>>> g_source_remove(op->opaque->repeat_timer);
>>>>> + op->opaque->repeat_timer = 0;
>>>>> }
>>>>> recurring_action_timer(op);
>>>>> return TRUE;
>>>>> @@ -459,6 +461,7 @@ handle_duplicate_recurring(svc_action_t *
> op,
>> void
>>>>> (*action_callback) (svc_actio
>>>>> if (dup->pid != 0) {
>>>>> if (op->opaque->repeat_timer) {
>>>>>
> g_source_remove(op->opaque->repeat_timer);
>>>>> + op->opaque->repeat_timer = 0;
>>>>> }
>>>>> recurring_action_timer(dup);
>>>>> }
>>>>>
>>>>>
>>>>> On 10 Oct 2014, at 12:16 pm, renayama19661014 at ybb.ne.jp wrote:
>>>>>
>>>>>> Hi Andrew,
>>>>>>
>>>>>> Setting of gdb of the Ubuntu environment does not yet go
> well
>> and I
>>>> touch
>>>>> lrmd and cannot acquire trace.
>>>>>> Please wait for this a little more.
>>>>>>
>>>>>>
>>>>>> But.. I let lrmd terminate abnormally when
> g_source_remove()
>> of
>>>>> cancel_recurring_action() returned FALSE.
>>>>>> -----
>>>>>> gboolean
>>>>>> cancel_recurring_action(svc_action_t * op)
>>>>>> {
>>>>>> crm_info("Cancelling operation %s",
> op->id);
>>>>>>
>>>>>> if (recurring_actions) {
>>>>>> g_hash_table_remove(recurring_actions,
> op->id);
>>>>>> }
>>>>>>
>>>>>> if (op->opaque->repeat_timer) {
>>>>>> if
> (g_source_remove(op->opaque->repeat_timer) ==
>> FALSE)
>>>> {
>>>>>> abort();
>>>>>> }
>>>>>> (snip)
>>>>>> -------core----
>>>>>> #0 0x00007f30aa60ff79 in __GI_raise (sig=sig at entry=6)
> at
>>>>> ../nptl/sysdeps/unix/sysv/linux/raise.c:56
>>>>>>
>>>>>> 56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such
> file
>> or
>>>> directory.
>>>>>> (gdb) where
>>>>>> #0 0x00007f30aa60ff79 in __GI_raise (sig=sig at entry=6)
> at
>>>>> ../nptl/sysdeps/unix/sysv/linux/raise.c:56
>>>>>> #1 0x00007f30aa613388 in __GI_abort () at abort.c:89
>>>>>> #2 0x00007f30aadcde77 in crm_abort
>> (file=file at entry=0x7f30aae0152b
>>>>> "logging.c",
>>>>>> function=function at entry=0x7f30aae028c0
>> <__FUNCTION__.23262>
>>>>> "crm_glib_handler", line=line at entry=73,
>>>>>> assert_condition=assert_condition at entry=0x19d2ad0
>> "Source ID
>>>> 63
>>>>> was not found when attempting to remove it",
>> do_core=do_core at entry=1,
>>>>>> do_fork=<optimized out>, do_fork at entry=1) at
>> utils.c:1195
>>>>>> #3 0x00007f30aadf5ca7 in crm_glib_handler
>> (log_domain=0x7f30aa35eb6e
>>>>> "GLib", flags=<optimized out>,
>>>>>> message=0x19d2ad0 "Source ID 63 was not found
> when
>> attempting
>>>> to
>>>>> remove it", user_data=<optimized out>) at
> logging.c:73
>>>>>> #4 0x00007f30aa320ae1 in g_logv () from
>>>>> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>>>>>> #5 0x00007f30aa320d72 in g_log () from
>>>>> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>>>>>> #6 0x00007f30aa318c5c in g_source_remove () from
>>>>> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>>>>>> #7 0x00007f30aabb2b55 in cancel_recurring_action
>>>> (op=op at entry=0x19caa90)
>>>>> at services.c:363
>>>>>> #8 0x00007f30aabb2bee in services_action_cancel
>>>> (name=name at entry=0x19d0530
>>>>> "dummy3", action=<optimized out>,
>>>> interval=interval at entry=10000)
>>>>>> at services.c:385
>>>>>> #9 0x000000000040405a in cancel_op
>> (rsc_id=rsc_id at entry=0x19d0530
>>>>> "dummy3", action=action at entry=0x19cec10
>> "monitor",
>>>>> interval=10000)
>>>>>> at lrmd.c:1404
>>>>>> #10 0x000000000040614f in process_lrmd_rsc_cancel
>> (client=0x19c8290,
>>>> id=74,
>>>>> request=0x19ca8a0) at lrmd.c:1468
>>>>>> #11 process_lrmd_message (client=client at entry=0x19c8290,
>
>> id=74,
>>>>> request=request at entry=0x19ca8a0) at lrmd.c:1507
>>>>>> #12 0x0000000000402bac in lrmd_ipc_dispatch
> (c=0x19c79c0,
>>>>> data=<optimized out>, size=361) at main.c:148
>>>>>> #13 0x00007f30aa07b4d9 in
> qb_ipcs_dispatch_connection_request
>> () from
>>>>> /usr/lib/libqb.so.0
>>>>>> #14 0x00007f30aadf209d in gio_read_socket
> (gio=<optimized
>> out>,
>>>>> condition=G_IO_IN, data=0x19c68a8) at mainloop.c:437
>>>>>> #15 0x00007f30aa319ce5 in g_main_context_dispatch ()
> from
>>>>> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>>>>>> ---Type <return> to continue, or q <return>
> to
>> quit---
>>>>>> #16 0x00007f30aa31a048 in ?? () from
>>>> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>>>>>> #17 0x00007f30aa31a30a in g_main_loop_run () from
>>>>> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>>>>>> #18 0x0000000000402774 in main (argc=<optimized
> out>,
>>>>> argv=0x7fffcdd90b88) at main.c:344
>>>>>> ---------
>>>>>>
>>>>>> Best Regards,
>>>>>> Hideo Yamauchi.
>>>>>>
>>>>>>
>>>>>>
>>>>>> ----- Original Message -----
>>>>>>> From: "renayama19661014 at ybb.ne.jp"
>>>>> <renayama19661014 at ybb.ne.jp>
>>>>>>> To: Andrew Beekhof <andrew at beekhof.net>
>>>>>>> Cc: The Pacemaker cluster resource manager
>>>>> <pacemaker at oss.clusterlabs.org>
>>>>>>> Date: 2014/10/7, Tue 11:15
>>>>>>> Subject: Re: [Pacemaker] [Problem]When Pacemaker
> uses a
>> new
>>>> version of
>>>>> glib, g_source_remove fails.
>>>>>>>
>>>>>>> Hi Andrew,
>>>>>>>
>>>>>>>> Not quite. Returning FALSE from the callback
> also
>> removes the
>>>>> source from
>>>>>>> glib.
>>>>>>>> So your test case effectively removes t1 twice:
> once
>>>> implicitly by
>>>>>>> returning
>>>>>>>> FALSE in timer_func1() and then again explicitly
> in
>>>> timer_func3()
>>>>>>>
>>>>>>>
>>>>>>> Your opinion is right.
>>>>>>>
>>>>>>>
>>>>>>> If Pacemaker repeats and does not remove the
> resources
>> which timer
>>>>
>>>>> concluded in
>>>>>>> FALSE, glib does not return the error.
>>>>>>>
>>>>>>>
>>>>>>> Many Thanks,
>>>>>>> Hideo Yamauchi.
>>>>>>>
>>>>>>>
>>>>>>> ----- Original Message -----
>>>>>>>> From: Andrew Beekhof <andrew at beekhof.net>
>>>>>>>> To: renayama19661014 at ybb.ne.jp
>>>>>>>> Cc: The Pacemaker cluster resource manager
>>>>>>> <pacemaker at oss.clusterlabs.org>
>>>>>>>> Date: 2014/10/7, Tue 11:06
>>>>>>>> Subject: Re: [Pacemaker] [Problem]When Pacemaker
> uses
>> a new
>>>> version
>>>>> of
>>>>>>> glib, g_source_remove fails.
>>>>>>>>
>>>>>>>>
>>>>>>>> On 7 Oct 2014, at 1:03 pm,
> renayama19661014 at ybb.ne.jp
>> wrote:
>>>>>>>>
>>>>>>>>> Hi Andrew,
>>>>>>>>>
>>>>>>>>>>> These problems seem to be due to a
>> correction of
>>>> next
>>>>> glib
>>>>>>> somehow
>>>>>>>> or
>>>>>>>>>> other.
>>>>>>>>>>> *
>>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>
>>>>
>>
> https://github.com/GNOME/glib/commit/393503ba5bdc7c09cd46b716aaf3d2c63a6c7f9c
>>>>>>>>>>
>>>>>>>>>> The glib behaviour on unbuntu seems
>> reasonable,
>>>> removing
>>>>> a source
>>>>>>>> multiple times
>>>>>>>>>> IS a valid error.
>>>>>>>>>> I need the stack trace to know
> where/how
>> this
>>>> situation
>>>>> can occur
>>>>>>> in
>>>>>>>> pacemaker.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Pacemaker does not remove resources several
>
>> times as far
>>>> as I
>>>>>
>>>>>>> confirmed it.
>>>>>>>>> In Ubuntu(glib2.40), an error occurs just
> to
>> remove
>>>> resources
>>>>> first.
>>>>>>>>
>>>>>>>> Not quite. Returning FALSE from the callback
> also
>> removes the
>>>>> source from
>>>>>>> glib.
>>>>>>>> So your test case effectively removes t1 twice:
> once
>>>> implicitly by
>>>>>>> returning
>>>>>>>> FALSE in timer_func1() and then again explicitly
> in
>>>> timer_func3()
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Confirmation and the deletion of resources
> seem
>> to be
>>>>> necessary not to
>>>>>>>
>>>>>>>> produce an error in Ubuntu.
>>>>>>>>> And this works well in glib of RHEL6.x.(and
>
>> RHEL7.0)
>>>>>>>>>
>>>>>>>>> if (g_main_context_find_source_by_id
>
>> (NULL, t1)
>>>> !=
>>>>> NULL) {
>>>>>>>>> g_source_remove(t1);
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> I send it to you after acquiring stack
> trace.
>>>>>>>>>
>>>>>>>>> Many Thanks!
>>>>>>>>> Hideo Yamauchi.
>>>>>>>>>
>>>>>>>>> ----- Original Message -----
>>>>>>>>>> From: Andrew Beekhof
>> <andrew at beekhof.net>
>>>>>>>>>> To: renayama19661014 at ybb.ne.jp; The
>> Pacemaker
>>>> cluster
>>>>> resource
>>>>>>> manager
>>>>>>>> <pacemaker at oss.clusterlabs.org>
>>>>>>>>>> Cc:
>>>>>>>>>> Date: 2014/10/7, Tue 09:44
>>>>>>>>>> Subject: Re: [Pacemaker] [Problem]When
>> Pacemaker
>>>> uses a
>>>>> new
>>>>>>> version of
>>>>>>>> glib, g_source_remove fails.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 6 Oct 2014, at 4:09 pm,
>>>> renayama19661014 at ybb.ne.jp
>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi All,
>>>>>>>>>>>
>>>>>>>>>>> When I move the next sample in
>>>>> RHEL6.5(glib2-2.22.5-7.el6) and
>>>>>>>
>>>>>>>>>> Ubuntu14.04(libglib2.0-0:amd64
> 2.40.0-2),
>> movement
>>>> is
>>>>> different.
>>>>>>>>>>>
>>>>>>>>>>> * Sample : test2.c
>>>>>>>>>>> {{{
>>>>>>>>>>> #include <stdio.h>
>>>>>>>>>>> #include <stdlib.h>
>>>>>>>>>>> #include <glib.h>
>>>>>>>>>>> #include <sys/times.h>
>>>>>>>>>>> guint t1, t2, t3;
>>>>>>>>>>> gboolean timer_func2(gpointer
> data){
>>>>>>>>>>> printf("TIMER
>>>> EXPIRE!2\n");
>>>>>>>>>>> fflush(stdout);
>>>>>>>>>>> return FALSE;
>>>>>>>>>>> }
>>>>>>>>>>> gboolean timer_func1(gpointer
> data){
>>>>>>>>>>> clock_t ret;
>>>>>>>>>>> struct tms buff;
>>>>>>>>>>>
>>>>>>>>>>> ret = times(&buff);
>>>>>>>>>>> printf("TIMER EXPIRE!1
>
>>>> %d\n",
>>>>>>> (int)ret);
>>>>>>>>>>> fflush(stdout);
>>>>>>>>>>> return FALSE;
>>>>>>>>>>> }
>>>>>>>>>>> gboolean timer_func3(gpointer
> data){
>>>>>>>>>>> printf("TIMER EXPIRE
>>>> 3!\n");
>>>>>>>>>>> fflush(stdout);
>>>>>>>>>>> printf("remove
>>>> timer1!\n");
>>>>>>>>>>>
>>>>>>>>>>> fflush(stdout);
>>>>>>>>>>> g_source_remove(t1);
>>>>>>>>>>> printf("remove
>>>> timer2!\n");
>>>>>>>>>>> fflush(stdout);
>>>>>>>>>>> g_source_remove(t2);
>>>>>>>>>>> printf("remove
>>>> timer3!\n");
>>>>>>>>>>> fflush(stdout);
>>>>>>>>>>> g_source_remove(t3);
>>>>>>>>>>> return FALSE;
>>>>>>>>>>> }
>>>>>>>>>>> int main(int argc, char** argv){
>>>>>>>>>>> GMainLoop *m;
>>>>>>>>>>> clock_t ret;
>>>>>>>>>>> struct tms buff;
>>>>>>>>>>> gint64 t;
>>>>>>>>>>> m = g_main_new(FALSE);
>>>>>>>>>>> t1 = g_timeout_add(1000,
>> timer_func1,
>>>> NULL);
>>>>>>>>>>> t2 = g_timeout_add(60000,
>> timer_func2,
>>>> NULL);
>>>>>>>>>>> t3 = g_timeout_add(5000,
>> timer_func3,
>>>> NULL);
>>>>>>>>>>> ret = times(&buff);
>>>>>>>>>>> printf("START!
>> %d\n",
>>>>> (int)ret);
>>>>>>>>>>> g_main_run(m);
>>>>>>>>>>> }
>>>>>>>>>>>
>>>>>>>>>>> }}}
>>>>>>>>>>> * Result
>>>>>>>>>>> ---- RHEL6.5(glib2-2.22.5-7.el6)
> ----
>>>>>>>>>>> [root at snmp1 ~]# ./test2
>>>>>>>>>>> START! 429576012
>>>>>>>>>>> TIMER EXPIRE!1 429576112
>>>>>>>>>>> TIMER EXPIRE 3!
>>>>>>>>>>> remove timer1!
>>>>>>>>>>> remove timer2!
>>>>>>>>>>> remove timer3!
>>>>>>>>>>>
>>>>>>>>>>> ---- Ubuntu14.04(libglib2.0-0:amd64
>
>> 2.40.0-2)
>>>> ----
>>>>>>>>>>> root at a1be102:~# ./test2
>>>>>>>>>>> START! 1718163089
>>>>>>>>>>> TIMER EXPIRE!1 1718163189
>>>>>>>>>>> TIMER EXPIRE 3!
>>>>>>>>>>> remove timer1!
>>>>>>>>>>>
>>>>>>>>>>> (process:1410): GLib-CRITICAL **:
> Source
>> ID 1
>>>> was not
>>>>> found
>>>>>>> when
>>>>>>>> attempting
>>>>>>>>>> to remove it
>>>>>>>>>>> remove timer2!
>>>>>>>>>>> remove timer3!
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> These problems seem to be due to a
>> correction of
>>>> next
>>>>> glib
>>>>>>> somehow
>>>>>>>> or
>>>>>>>>>> other.
>>>>>>>>>>> *
>>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>
>>>>
>>
> https://github.com/GNOME/glib/commit/393503ba5bdc7c09cd46b716aaf3d2c63a6c7f9c
>>>>>>>>>>
>>>>>>>>>> The glib behaviour on unbuntu seems
>> reasonable,
>>>> removing
>>>>> a source
>>>>>>>> multiple times
>>>>>>>>>> IS a valid error.
>>>>>>>>>> I need the stack trace to know
> where/how
>> this
>>>> situation
>>>>> can occur
>>>>>>> in
>>>>>>>> pacemaker.
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> In g_source_remove() until before
>> change, the
>>>>> deletion of the
>>>>>>> timer
>>>>>>>> which
>>>>>>>>>> practice completed is possible, but
>>>> g_source_remove()
>>>>> after the
>>>>>>> change
>>>>>>>> causes an
>>>>>>>>>> error.
>>>>>>>>>>>
>>>>>>>>>>> Under this influence, we get the
>> following crit
>>>> error
>>>>> in the
>>>>>>>> environment of
>>>>>>>>>> Pacemaker using a new version of glib.
>>>>>>>>>>>
>>>>>>>>>>> lrmd[1632]: error: crm_abort:
>>>> crm_glib_handler:
>>>>> Forked
>>>>>>> child
>>>>>>>> 1840 to
>>>>>>>>>>> record non-fatal assert at
> logging.c:73
>> : Source
>>>> ID
>>>>> 51 was not
>>>>>>>
>>>>>>>> found when
>>>>>>>>>>> attempting to remove it
>>>>>>>>>>> lrmd[1632]: crit:
> crm_glib_handler:
>> GLib:
>>>> Source
>>>>> ID 51 was
>>>>>>> not
>>>>>>>> found
>>>>>>>>>>> when attempting to remove it
>>>>>>>>>>>
>>>>>>>>>>> It seems that some kind of coping
> is
>> necessary
>>>> in
>>>>> Pacemaker
>>>>>>> when I
>>>>>>>> think
>>>>>>>>>> about next.
>>>>>>>>>>> * Distribution using a new version
> of
>> glib
>>>> including
>>>>> Ubuntu.
>>>>>>>>>>> * Version up of future glib of
> RHEL.
>>>>>>>>>>>
>>>>>>>>>>> A similar problem is reported in
> the ML.
>>>>>>>>>>> *
>>>>>>>>
>>>>
> http://www.gossamer-threads.com/lists/linuxha/pacemaker/91333#91333
>>>>>>>>>>> *
>>>>>>>
>> http://www.gossamer-threads.com/lists/linuxha/pacemaker/92408
>>>>>>>>>>>
>>>>>>>>>>> Best Regards,
>>>>>>>>>>> Hideo Yamauchi.
>>>>>>>>>>>
>>>>>>>>>>>
>> _______________________________________________
>>>>>>>>>>> Pacemaker mailing list:
>>>> Pacemaker at oss.clusterlabs.org
>>>>>>>>>>>
>>>> http://oss.clusterlabs.org/mailman/listinfo/pacemaker
>>>>>>>>>>>
>>>>>>>>>>> Project Home:
> http://www.clusterlabs.org
>>>>>>>>>>> Getting started:
>>>>>>>>
>> http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
>>>>>>>>>>> Bugs: http://bugs.clusterlabs.org
>>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Pacemaker mailing list:
> Pacemaker at oss.clusterlabs.org
>>>>>>> http://oss.clusterlabs.org/mailman/listinfo/pacemaker
>>>>>>>
>>>>>>> Project Home: http://www.clusterlabs.org
>>>>>>> Getting started:
>>>>> http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
>>>>>>> Bugs: http://bugs.clusterlabs.org
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Pacemaker mailing list: Pacemaker at oss.clusterlabs.org
>>>>>> http://oss.clusterlabs.org/mailman/listinfo/pacemaker
>>>>>>
>>>>>> Project Home: http://www.clusterlabs.org
>>>>>> Getting started:
>>>> http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
>>>>>> Bugs: http://bugs.clusterlabs.org
>>>>>
>>>>
>>>> _______________________________________________
>>>> Pacemaker mailing list: Pacemaker at oss.clusterlabs.org
>>>> http://oss.clusterlabs.org/mailman/listinfo/pacemaker
>>>>
>>>> Project Home: http://www.clusterlabs.org
>>>> Getting started:
>> http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
>>>> Bugs: http://bugs.clusterlabs.org
>>>>
>>>
>>> _______________________________________________
>>> Pacemaker mailing list: Pacemaker at oss.clusterlabs.org
>>> http://oss.clusterlabs.org/mailman/listinfo/pacemaker
>>>
>>> Project Home: http://www.clusterlabs.org
>>> Getting started:
> http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
>>> Bugs: http://bugs.clusterlabs.org
>>
>
> _______________________________________________
> Pacemaker mailing list: Pacemaker at oss.clusterlabs.org
> http://oss.clusterlabs.org/mailman/listinfo/pacemaker
>
> Project Home: http://www.clusterlabs.org
> Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
> Bugs: http://bugs.clusterlabs.org
>
More information about the Pacemaker
mailing list