Re: [Pacemaker] [Problem]When Pacemaker uses a new version of glib, g_source_remove fails.

2014-10-24 Thread Andrew Beekhof
done

> On 14 Oct 2014, at 10:45 am, renayama19661...@ybb.ne.jp wrote:
> 
> 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: "renayama19661...@ybb.ne.jp" 
>> To: The Pacemaker cluster resource manager 
>> 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 
>>> To: renayama19661...@ybb.ne.jp; The Pacemaker cluster resource manager 
>> 
>>> 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, renayama19661...@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

Re: [Pacemaker] [Problem]When Pacemaker uses a new version of glib, g_source_remove fails.

2014-10-13 Thread renayama19661014
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: "renayama19661...@ybb.ne.jp" 
> To: The Pacemaker cluster resource manager 
> 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 
>>  To: renayama19661...@ybb.ne.jp; The Pacemaker cluster resource manager 
> 
>>  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, renayama19661...@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  0x7fdd923e1f79 in __GI_raise (sig=sig@entry=6) at 
>>  ../nptl/sysdeps/unix/sysv/linux/raise.c:56
>>>   #1  0x7fdd923e5388 in __GI_abort () at abort.c:89
>>>   #2  0x7fdd92b9fe77 in crm_abort (file=file@entry=0x7fdd92bd352b 
>>  "logging.c", 
>

Re: [Pacemaker] [Problem]When Pacemaker uses a new version of glib, g_source_remove fails.

2014-10-09 Thread renayama19661014
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 
> To: renayama19661...@ybb.ne.jp; The Pacemaker cluster resource manager 
> 
> 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, renayama19661...@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  0x7fdd923e1f79 in __GI_raise (sig=sig@entry=6) at 
> ../nptl/sysdeps/unix/sysv/linux/raise.c:56
>>  #1  0x7fdd923e5388 in __GI_abort () at abort.c:89
>>  #2  0x7fdd92b9fe77 in crm_abort (file=file@entry=0x7fdd92bd352b 
> "logging.c", 
>>      function=function@entry=0x7fdd92bd48c0 <__FUNCTION__.23262> 
> "crm_glib_handler", line=line@entry=73, 
>>      assert_condition=assert_condition@entry=0xe20b80 "Source ID 40 was 
> not found when attempting to remove it", do_core=do_core@entry=1, 
>>      do_fork=, do_fork@entry=1) at utils.c:1195
>>  #3  0x7fdd92bc7ca7 in crm_glib_handler (log_domain=0x7fdd92130b6e 
> "GLib", flags=, 
>>      message=0xe20b80 "Source ID 40 was not found when attempting to 
> remove it", user_data=) at logging.c:73
>>  #4  0x7fdd920f2ae1 in g_logv () from 
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>>  #5  0x7fdd920f2d72 in g_log () from 
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>>  #6  0x7fdd920eac5c in g_source_remove () from 
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>>  #7  0x7fdd92984b55 in cancel_recurring_action (op=op@entry=0xe19b90) at 
> services.c:365
>>  #8  0x7fdd92984bee in services_action_cancel (name=name@entry=0xe1d2d0 
>

Re: [Pacemaker] [Problem]When Pacemaker uses a new version of glib, g_source_remove fails.

2014-10-09 Thread Andrew Beekhof
/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, renayama19661...@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  0x7fdd923e1f79 in __GI_raise (sig=sig@entry=6) at 
> ../nptl/sysdeps/unix/sysv/linux/raise.c:56
> #1  0x7fdd923e5388 in __GI_abort () at abort.c:89
> #2  0x7fdd92b9fe77 in crm_abort (file=file@entry=0x7fdd92bd352b 
> "logging.c", 
> function=function@entry=0x7fdd92bd48c0 <__FUNCTION__.23262> 
> "crm_glib_handler", line=line@entry=73, 
> assert_condition=assert_condition@entry=0xe20b80 "Source ID 40 was not 
> found when attempting to remove it", do_core=do_core@entry=1, 
> do_fork=, do_fork@entry=1) at utils.c:1195
> #3  0x7fdd92bc7ca7 in crm_glib_handler (log_domain=0x7fdd92130b6e "GLib", 
> flags=, 
> message=0xe20b80 "Source ID 40 was not found when attempting to remove 
> it", user_data=) at logging.c:73
> #4  0x7fdd920f2ae1 in g_logv () from 
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
> #5  0x7fdd920f2d72 in g_log () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
> #6  0x7fdd920eac5c in g_source_remove () from 
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
> #7  0x7fdd92984b55 in cancel_recurring_action (op=op@entry=0xe19b90) at 
> services.c:365
> #8  0x7fdd92984bee in services_action_cancel (name=name@entry=0xe1d2d0 
> "dummy2", action=, interval=interval@entry=1)
> at services.c:387
> #9  0x0040405a in cancel_op (rsc_id=rsc_id@entry=0xe1d2d0 "dummy2", 
> action=action@entry=0xe10d90 "monitor", interval=1)
> at lrmd.c:1404
> #10 0x0040614f in process_lrmd_rsc_cancel (client=0xe17290, id=74, 
> request=0xe1be10) at lrmd.c:1468
> #11 process_lrmd_message (client=client@entry=0xe17290, id=74, 
> request=request@entry=0xe1be10) at lrmd.c:1507
> #12 0x00402bac in lrmd_ipc_dispatch (c=0xe169c0, data= out>, size=361) at main.c:148
> #13 0x7fdd91e4d4d9 in qb_ipcs_dispatch_connection_request () from 
> /usr/lib/libqb.so.0
> #14 0x7fdd92bc409d in gio_read_socket (gio=, 
> condition=G_IO_IN, data=0xe158a8) at mainloop.c:437
> #15 0x7fdd920ebce5 in g_main_context_dispatch () from 
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
> ---Type  to continue, or q  to quit---
> #16 0x7fdd920ec048 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
> #17 0x7fdd920ec30a in g_main_loop_run () from 
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
> #18 0x00402774 in main (argc=, argv=0x7fff22cac268) at 
> main.c:344
> 
> Best Regards,
> Hideo Yamauchi.
> 
> 
>

Re: [Pacemaker] [Problem]When Pacemaker uses a new version of glib, g_source_remove fails.

2014-10-09 Thread renayama19661014
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  0x7fdd923e1f79 in __GI_raise (sig=sig@entry=6) at 
../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x7fdd923e5388 in __GI_abort () at abort.c:89
#2  0x7fdd92b9fe77 in crm_abort (file=file@entry=0x7fdd92bd352b 
"logging.c", 
    function=function@entry=0x7fdd92bd48c0 <__FUNCTION__.23262> 
"crm_glib_handler", line=line@entry=73, 
    assert_condition=assert_condition@entry=0xe20b80 "Source ID 40 was not 
found when attempting to remove it", do_core=do_core@entry=1, 
    do_fork=, do_fork@entry=1) at utils.c:1195
#3  0x7fdd92bc7ca7 in crm_glib_handler (log_domain=0x7fdd92130b6e "GLib", 
flags=, 
    message=0xe20b80 "Source ID 40 was not found when attempting to remove it", 
user_data=) at logging.c:73
#4  0x7fdd920f2ae1 in g_logv () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x7fdd920f2d72 in g_log () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#6  0x7fdd920eac5c in g_source_remove () from 
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#7  0x7fdd92984b55 in cancel_recurring_action (op=op@entry=0xe19b90) at 
services.c:365
#8  0x7fdd92984bee in services_action_cancel (name=name@entry=0xe1d2d0 
"dummy2", action=, interval=interval@entry=1)
    at services.c:387
#9  0x0040405a in cancel_op (rsc_id=rsc_id@entry=0xe1d2d0 "dummy2", 
action=action@entry=0xe10d90 "monitor", interval=1)
    at lrmd.c:1404
#10 0x0040614f in process_lrmd_rsc_cancel (client=0xe17290, id=74, 
request=0xe1be10) at lrmd.c:1468
#11 process_lrmd_message (client=client@entry=0xe17290, id=74, 
request=request@entry=0xe1be10) at lrmd.c:1507
#12 0x00402bac in lrmd_ipc_dispatch (c=0xe169c0, data=, 
size=361) at main.c:148
#13 0x7fdd91e4d4d9 in qb_ipcs_dispatch_connection_request () from 
/usr/lib/libqb.so.0
#14 0x7fdd92bc409d in gio_read_socket (gio=, 
condition=G_IO_IN, data=0xe158a8) at mainloop.c:437
#15 0x7fdd920ebce5 in g_main_context_dispatch () from 
/lib/x86_64-linux-gnu/libglib-2.0.so.0
---Type  to continue, or q  to quit---
#16 0x7fdd920ec048 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x7fdd920ec30a in g_main_loop_run () from 
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#18 0x00402774 in main (argc=, argv=0x7fff22cac268) at 
main.c:344

Best Regards,
Hideo Yamauchi.


- Original Message -
> From: "renayama19661...@ybb.ne.jp" 
> To: Andrew Beekhof ; The Pacemaker cluster resource 
> manager 
> 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 
>>  To: renayama19661...@ybb.ne.jp; The Pacemaker cluster resource manager 
> 
>>  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_

Re: [Pacemaker] [Problem]When Pacemaker uses a new version of glib, g_source_remove fails.

2014-10-09 Thread renayama19661014
Hi Andrew,

Okay!

I test your patch.
And I inform you of a result.

Many thanks!
Hideo Yamauchi.



- Original Message -
> From: Andrew Beekhof 
> To: renayama19661...@ybb.ne.jp; The Pacemaker cluster resource manager 
> 
> 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, renayama19661...@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  0x7f30aa60ff79 in __GI_raise (sig=sig@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  0x7f30aa60ff79 in __GI_raise (sig=sig@entry=6) at 
> ../nptl/sysdeps/unix/sysv/linux/raise.c:56
>>  #1  0x7f30aa613388 in __GI_abort () at abort.c:89
>>  #2  0x7f30aadcde77 in crm_abort (file=file@entry=0x7f30aae0152b 
> "logging.c", 
>>      function=function@entry=0x7f30aae028c0 <__FUNCTION__.23262> 
> "crm_glib_handler", line=line@entry=73, 
>>      assert_condition=assert_condition@entry=0x19d2ad0 "Source ID 63 
> was not found when attempting to remove it", do_core=do_core@entry=1, 
>>      do_fork=, do_fork@entry=1) at utils.c:1195
>>  #3  0x7f30aadf5ca7 in crm_glib_handler (log_domain=0x7f30aa35eb6e 
> "GLib", flags=, 
>>      message=0x19d2ad0 "Source ID 63 was not found when attempting to 
> remove it", user_data=) at logging.c:73
>>  #4  0x7f30aa320ae1 in g_logv () from 
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>>  #5  0x7f30aa320d72 in g_log () from 
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>>  #6  0x7f30aa318c5c in g_source_remove () from 
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
>>  #7  0x7f30aabb2b55 in cancel_recurring_action (op=op@entry=0x19caa90) 
> at services.c:363
>>  #8  0x7f30aabb2bee in services_action_cancel (name=name@entry=0x19d0530 
> "dummy3", action=, interval=interval@entry=1)
>>      at services.c:385
>>  #9  0x0040405a in cancel_op (rsc_id=rsc_id@entry=0x19d0530 
> "dummy3", action=action@entry=0x19cec10 "monitor", 
> interval=1)
>>      at lrmd.c:1404
>>  #10 0x0040614f in process_lrmd_rsc_cancel (client=0x19c8290, id=74, 
> request=0x19ca8a0) at lrmd.c:1468
>>  #11 process_lrmd_message (client=client@entry=0x19c8290, id=74, 
> request=request@entry=0x19ca8a0) at lrmd.c:1507
>>  #12 0x00402bac in lrmd_ipc_dispatch (c=0x19c79c0, 
> data=, size=361) at main.c:148
>>  #13 0x7f30a

Re: [Pacemaker] [Problem]When Pacemaker uses a new version of glib, g_source_remove fails.

2014-10-09 Thread Andrew Beekhof
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, renayama19661...@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  0x7f30aa60ff79 in __GI_raise (sig=sig@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  0x7f30aa60ff79 in __GI_raise (sig=sig@entry=6) at 
> ../nptl/sysdeps/unix/sysv/linux/raise.c:56
> #1  0x7f30aa613388 in __GI_abort () at abort.c:89
> #2  0x7f30aadcde77 in crm_abort (file=file@entry=0x7f30aae0152b 
> "logging.c", 
> function=function@entry=0x7f30aae028c0 <__FUNCTION__.23262> 
> "crm_glib_handler", line=line@entry=73, 
> assert_condition=assert_condition@entry=0x19d2ad0 "Source ID 63 was not 
> found when attempting to remove it", do_core=do_core@entry=1, 
> do_fork=, do_fork@entry=1) at utils.c:1195
> #3  0x7f30aadf5ca7 in crm_glib_handler (log_domain=0x7f30aa35eb6e "GLib", 
> flags=, 
> message=0x19d2ad0 "Source ID 63 was not found when attempting to remove 
> it", user_data=) at logging.c:73
> #4  0x7f30aa320ae1 in g_logv () from 
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
> #5  0x7f30aa320d72 in g_log () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
> #6  0x7f30aa318c5c in g_source_remove () from 
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
> #7  0x7f30aabb2b55 in cancel_recurring_action (op=op@entry=0x19caa90) at 
> services.c:363
> #8  0x7f30aabb2bee in services_action_cancel (name=name@entry=0x19d0530 
> "dummy3", action=, interval=interval@entry=1)
> at services.c:385
> #9  0x0040405a in cancel_op (rsc_id=rsc_id@entry=0x19d0530 "dummy3", 
> action=action@entry=0x19cec10 "monitor", interval=1)
> at lrmd.c:1404
> #10 0x0040614f in process_lrmd_rsc_cancel (client=0x19c8290, id=74, 
> request=0x19ca8a0) at lrmd.c:1468
> #11 process_lrmd_message (client=client@entry=0x19c8290, id=74, 
> request=request@entry=0x19ca8a0) at lrmd.c:1507
> #12 0x00402bac in lrmd_ipc_dispatch (c=0x19c79c0, data= out>, size=361) at main.c:148
> #13 0x7f30aa07b4d9 in qb_ipcs_dispatch_connection_request () from 
> /usr/lib/libqb.so.0
> #14 0x7f30aadf209d in gio_read_socket (gio=, 
> condition=G_IO_IN, data=0x19c68a8) at mainloop.c:437
> #15 0x7f30aa319ce5 in g_main_context_dispatch () from 
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
> ---Type  to continue, or q  to quit---
> #16 0x7f30aa31a048 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
> #17 0x7f30aa31a30a in g_main_loop_run () from 
> /lib/x86_64-linux-gnu/libglib-2.0.so.0
> #18 0x00402774 in main (argc=, argv=0x7fffcdd90b88) at 
> main.c:344
> -
> 
> Best Regards,
> Hideo Yamauchi.
> 
> 
> 
> - Original Message -
>> From: "renayama19661...@ybb.ne.jp" 
>> To: Andrew Beekhof 
>> Cc: The Pacemaker cluster resource ma

Re: [Pacemaker] [Problem]When Pacemaker uses a new version of glib, g_source_remove fails.

2014-10-09 Thread renayama19661014
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  0x7f30aa60ff79 in __GI_raise (sig=sig@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  0x7f30aa60ff79 in __GI_raise (sig=sig@entry=6) at 
../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x7f30aa613388 in __GI_abort () at abort.c:89
#2  0x7f30aadcde77 in crm_abort (file=file@entry=0x7f30aae0152b 
"logging.c", 
    function=function@entry=0x7f30aae028c0 <__FUNCTION__.23262> 
"crm_glib_handler", line=line@entry=73, 
    assert_condition=assert_condition@entry=0x19d2ad0 "Source ID 63 was not 
found when attempting to remove it", do_core=do_core@entry=1, 
    do_fork=, do_fork@entry=1) at utils.c:1195
#3  0x7f30aadf5ca7 in crm_glib_handler (log_domain=0x7f30aa35eb6e "GLib", 
flags=, 
    message=0x19d2ad0 "Source ID 63 was not found when attempting to remove 
it", user_data=) at logging.c:73
#4  0x7f30aa320ae1 in g_logv () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x7f30aa320d72 in g_log () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#6  0x7f30aa318c5c in g_source_remove () from 
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#7  0x7f30aabb2b55 in cancel_recurring_action (op=op@entry=0x19caa90) at 
services.c:363
#8  0x7f30aabb2bee in services_action_cancel (name=name@entry=0x19d0530 
"dummy3", action=, interval=interval@entry=1)
    at services.c:385
#9  0x0040405a in cancel_op (rsc_id=rsc_id@entry=0x19d0530 "dummy3", 
action=action@entry=0x19cec10 "monitor", interval=1)
    at lrmd.c:1404
#10 0x0040614f in process_lrmd_rsc_cancel (client=0x19c8290, id=74, 
request=0x19ca8a0) at lrmd.c:1468
#11 process_lrmd_message (client=client@entry=0x19c8290, id=74, 
request=request@entry=0x19ca8a0) at lrmd.c:1507
#12 0x00402bac in lrmd_ipc_dispatch (c=0x19c79c0, data=, 
size=361) at main.c:148
#13 0x7f30aa07b4d9 in qb_ipcs_dispatch_connection_request () from 
/usr/lib/libqb.so.0
#14 0x7f30aadf209d in gio_read_socket (gio=, 
condition=G_IO_IN, data=0x19c68a8) at mainloop.c:437
#15 0x7f30aa319ce5 in g_main_context_dispatch () from 
/lib/x86_64-linux-gnu/libglib-2.0.so.0
---Type  to continue, or q  to quit---
#16 0x7f30aa31a048 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#17 0x7f30aa31a30a in g_main_loop_run () from 
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#18 0x00402774 in main (argc=, argv=0x7fffcdd90b88) at 
main.c:344
-

Best Regards,
Hideo Yamauchi.



- Original Message -
> From: "renayama19661...@ybb.ne.jp" 
> To: Andrew Beekhof 
> Cc: The Pacemaker cluster resource manager 
> 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 
>>  To: renayama19661...@ybb.ne.jp
>>  Cc: The Pacemaker cluster resource manager 
> 
>>  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, renayama19661...@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.
>>>

Re: [Pacemaker] [Problem]When Pacemaker uses a new version of glib, g_source_remove fails.

2014-10-06 Thread renayama19661014
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 
> To: renayama19661...@ybb.ne.jp
> Cc: The Pacemaker cluster resource manager 
> 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, renayama19661...@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 
>>>  To: renayama19661...@ybb.ne.jp; The Pacemaker cluster resource manager 
> 
>>>  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, renayama19661...@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 
>>>>  #include 
>>>>  #include 
>>>>  #include 
>>>>  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(6, timer_func2, NULL);
>>>>           t3 = g_timeout_add(5000, timer_func3, NULL);
>>>>           ret = times(

Re: [Pacemaker] [Problem]When Pacemaker uses a new version of glib, g_source_remove fails.

2014-10-06 Thread Andrew Beekhof

On 7 Oct 2014, at 1:03 pm, renayama19661...@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 
>> To: renayama19661...@ybb.ne.jp; The Pacemaker cluster resource manager 
>> 
>> 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, renayama19661...@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 
>>> #include 
>>> #include 
>>> #include 
>>> 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(6, 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@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@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

Re: [Pacemaker] [Problem]When Pacemaker uses a new version of glib, g_source_remove fails.

2014-10-06 Thread renayama19661014
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.

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 
> To: renayama19661...@ybb.ne.jp; The Pacemaker cluster resource manager 
> 
> 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, renayama19661...@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 
>>  #include 
>>  #include 
>>  #include 
>>  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(6, 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@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@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

Re: [Pacemaker] [Problem]When Pacemaker uses a new version of glib, g_source_remove fails.

2014-10-06 Thread Andrew Beekhof

On 6 Oct 2014, at 4:09 pm, renayama19661...@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 
> #include 
> #include 
> #include 
> 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(6, 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@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@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@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



signature.asc
Description: Message signed with OpenPGP using GPGMail
___
Pacemaker mailing list: Pacemaker@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] [Problem]When Pacemaker uses a new version of glib, g_source_remove fails.

2014-10-05 Thread renayama19661014
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 
#include 
#include 
#include 
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(6, 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@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@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

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@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