[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-lvm
Subject:    Re: [linux-lvm] LVM2.2.02.88 - segfault when using lv_t pointers
From:       Zdenek Kabelac <zdenek.kabelac () gmail ! com>
Date:       2011-09-28 12:34:30
Message-ID: CAJJYPdmPH87=Gpu3T9exQYE8uOEr02Hg8FSWzN26mjY0ZgTPsw () mail ! gmail ! com
[Download RAW message or body]

2011/9/28 Alexander Lyakas <alex.bolshoy@gmail.com>:
> Hi everybody,
> we started to work with this LVM version, and sometimes we hit an
> issue when using lv_t pointers obtained from lvm_vg_list_lvs() API.
> Here are a couple of examples:
>
> #0  0x00007f4487816d05 in raise () from /lib/x86_64-linux-gnu/libc.so.6
> (gdb) bt
> #0  0x00007f4487816d05 in raise () from /lib/x86_64-linux-gnu/libc.so.6
> #1  0x00007f448781aa47 in abort () from /lib/x86_64-linux-gnu/libc.so.6
> #2  0x00007f448784fd7b in ?? () from /lib/x86_64-linux-gnu/libc.so.6
> #3  0x00007f448785cd7a in ?? () from /lib/x86_64-linux-gnu/libc.so.6
> #4  0x00007f448785f31e in malloc () from /lib/x86_64-linux-gnu/libc.so.6
> #5  0x00007f448784e75f in open_memstream () from /lib/x86_64-linux-gnu/libc.so.6

Looks like you hit some internal glibc malloc  integrity selfcheck -
so some memory has been unexpectedly modified - I'd advise to use
valgrind tool to find proper place when the memory is overwritten.

>        if (lv_list != NULL) {
>                dm_list_iterate_items(lv_list_entry, lv_list) {
>                        const char * lv_name_from_list = lvm_lv_get_name(lv_list_entry->lv);
>                        if (strcmp(lv_name_from_list, lv_name) == 0) {
>                                lv_handle = lv_list_entry->lv;
>                                break;
>                        }
>                }
>        }
>
> This is the code that we obtain the lv_t pointers from. Looking at the
> new  lvm_lv_from_name() API, it does exactly the same (without giving
> away copies of the list, names etc).  We started using the new API
> anyways, and did not see any crashes with it (yet).
>
> Is there anything wrong in the way we obtain lv_t pointers? Could this
> be some other issue?


Depends on, what do you do with pointers - you can't use them once you
free vg handle.
But I think valgrind will be here better then 1000 words....

Zdenek

_______________________________________________
linux-lvm mailing list
linux-lvm@redhat.com
https://www.redhat.com/mailman/listinfo/linux-lvm
read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic