int ul0(shm_unlink(worldPath)); if (ul0 == -1) perror("(preventive) shm_unlink");
int main(void){    // STL allocators experiment    //    vector<int, alloc<int> > v(3);    map<int, int, less<int>, alloc<int> > m;    m.insert(make_pair(1, 42));    cons* c(alloc<cons>().allocate(1));    c->first = c;    c->second = 0;    rooty = c;    collect(true);    // get the world set up    //    static const char worldPath[] = "/aL4nin";    int hdl(shm_open(worldPath,                     O_RDWR | O_CREAT,                     S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP));    if (hdl == -1)        perror("shm_open");    int tr(ftruncate(hdl, world::size()));    if (tr == -1)        perror("ftruncate");    world* w(new(hdl) world);    void* area(w);        // Clusters experiment    //    Cluster_vcons& clu(Cluster_vcons::allocate());    vcons& babe(clu.objs[10]);        // vcons experiment    //    vcons& vc(babe);    vc.sayhello();    for (vcons* s = clu.objs + 640, *e = clu.objs + 690; s != e; ++s)        s->sayindex();    // allocation experiment    //    vcons* aa(new vcons);    printf("alloced at: (%p)\n", aa);    vcons* bb(new vcons);    printf("blloced at: (%p)\n", bb);    vcons* yy(        (new vcons, new vcons, new vcons, new vcons,        new vcons, new vcons, new vcons, new vcons,        new vcons, new vcons, new vcons, new vcons,        new vcons, new vcons, new vcons, new vcons,            new vcons, new vcons, new vcons, new vcons,            new vcons, new vcons, new vcons, new vcons,            new vcons, new vcons, new vcons, new vcons,            new vcons, new vcons));    printf("ylloced at: (%p)\n", yy);    vcons* zz(new vcons);    printf("zlloced at: (%p)\n", zz);    // HomogenousCluster experiment    //    nodeCluster& nc(nodeCluster::allocate());    nc.printCharacteristics();    Node n(new Node0);    delete n;    // forked exceptions experiment    //    vcons& ev(babe);    try    {        fork_and_exception(ev);    }    catch (vcons*)    {        printf("exiting... (%d)\n", getpid());        _exit(0);    }    unsigned long* p((unsigned long*)area);///    *p = 0xbeeffece;    w->protectPageRW(0);        struct sigaction act, oact;    memset(&act, 0, sizeof act);    sigemptyset(&act.sa_mask);    act.sa_flags = SA_SIGINFO;    #   ifdef __APPLE__    act.sa_sigaction = yummy;    if (sigaction(SIGBUS, &act, &oact))#   else    act.sa_sigaction = wummy;    if (sigaction(SIGSEGV, &act, &oact))#   endif        perror("sigaction");        {        for (int i(0); i < 100; i += 4)        {            char* p((char*)area + i);            printf("i: %d, o: %p, m: %p\n", i, p, world::Cluster<4, 3>::Raw2Meta<3>(p));            *p = 0;            printf("*p = %x\n", *(unsigned long*)p);        }                for (int i(10000); i < 10100; i += 4)        {            char* p((char*)area + i);            printf("i: %d, o: %p, m: %p\n", i, p, world::Cluster<4, 3>::Raw2Meta<3>(p));            *p = 0;        }                int um(munmap(area, world::size()));        if (um == -1)            perror("munmap");    }        int ul(shm_unlink(worldPath));    if (ul == -1)        perror("shm_unlink");}