Skip to content
Snippets Groups Projects
  • Hailiang Zhang's avatar
    b19456dd
    char: Fix removing wrong GSource that be found by fd_in_tag · b19456dd
    Hailiang Zhang authored
    
    We use fd_in_tag to find a GSource, fd_in_tag is return value of
    g_source_attach(GSource *source, GMainContext *context), the return
    value is unique only in the same context, so we may get the same
    values with different 'context' parameters.
    
    It is no problem to find the right fd_in_tag by using
     g_main_context_find_source_by_id(GMainContext *context, guint source_id)
    while there is only one default main context.
    
    But colo-compare tries to create/use its own context, and if we pass wrong
    'context' parameter with right fd_in_tag, we will find a wrong GSource to handle.
    We tried to fix the related codes in commit b43decb0,
    but it didn't fix the bug completely, because we still have some codes didn't pass
    *right* context parameter for remove_fd_in_watch().
    
    Let's fix it by record the GSource directly instead of fd_in_tag.
    
    Signed-off-by: default avatarzhanghailiang <zhang.zhanghailiang@huawei.com>
    Reviewed-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
    Message-Id: <1492564532-91680-1-git-send-email-zhang.zhanghailiang@huawei.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    b19456dd
    History
    char: Fix removing wrong GSource that be found by fd_in_tag
    Hailiang Zhang authored
    
    We use fd_in_tag to find a GSource, fd_in_tag is return value of
    g_source_attach(GSource *source, GMainContext *context), the return
    value is unique only in the same context, so we may get the same
    values with different 'context' parameters.
    
    It is no problem to find the right fd_in_tag by using
     g_main_context_find_source_by_id(GMainContext *context, guint source_id)
    while there is only one default main context.
    
    But colo-compare tries to create/use its own context, and if we pass wrong
    'context' parameter with right fd_in_tag, we will find a wrong GSource to handle.
    We tried to fix the related codes in commit b43decb0,
    but it didn't fix the bug completely, because we still have some codes didn't pass
    *right* context parameter for remove_fd_in_watch().
    
    Let's fix it by record the GSource directly instead of fd_in_tag.
    
    Signed-off-by: default avatarzhanghailiang <zhang.zhanghailiang@huawei.com>
    Reviewed-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
    Message-Id: <1492564532-91680-1-git-send-email-zhang.zhanghailiang@huawei.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>