I have some problems with destructor, in next code:
#include <stdlib.h>
#include <cstdio>
class Foo2
{
    public:
        Foo2() { printf("foo2 const\n"); }
        ~Foo2()
        {
            printf("foo2 dest\n"); //  <--- wasn't called for bionic libc
        }
};
static Foo2& GetFoo2()
{
    static Foo2 foo2;
    printf ("return foo2\n");
    return foo2;
}
class Foo1
{
    public:
        Foo1() { printf("foo1 const\n"); }
        ~Foo1()
        {
            printf("foo1 dest\n");
            GetFoo2();
        }
};
int main( int argc, const char* argv[] )
{
        printf("main 1 \n");
        static Foo1 anotherFoo;
        printf("main 2 \n");
}
Why destructor for foo2 wasn't called for bionic and was for glibc?    
EDIT
Output for bionic:  
main 1  
foo1 const  
main 2  
foo1 dest  
foo2 const  
return foo2  
Debug info:
(gdb) break 22
Breakpoint 1 at 0x8048858: file test.C, line 22.
(gdb) info breakpoints
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x08048858 in Foo2::~Foo2() at test.C:22
(gdb) cont
[    exited with code 0]
 
     
     
     
    
 
    