Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Port small to Windows/Visual Studio 2015 #10

Closed
wants to merge 21 commits into from

Conversation

tsafin
Copy link

@tsafin tsafin commented Sep 5, 2016

Small library has been ported to Visual Studio 2015/Windows.
pthread, mmap and stdatomic compatibility support introduced.
Some smaller changes in code (e.g. void pointer ariphmetic(!)) or rlist changes required because of
lack of typeof support in preprocessor. Thisis good thing though, the code became more standard
compliant and less gcc specific.

stdatomic support will need to be revisited

Although it's recommended to use something more complete (like pthread-win32 project), but in a mean-time we just stubbing
some required pthread.h functions.
Also fixed some minor warnings like returning values of void functions. Or using random() or rand_r() functions not implemented in MSVCRT.
@kyukhin
Copy link
Contributor

kyukhin commented Jan 25, 2021

Too old. Fee free to rebase-reopen.

@kyukhin kyukhin closed this Jan 25, 2021
nshy added a commit to nshy/small that referenced this pull request Jun 16, 2023
…troy

It currently breaks Tarantool debug runs. For example on running
'box/box/reconfigure.test':

    tarantool#5  0x00007fed360483d6 in __assert_fail (
        assertion=0x556b5a6c883d "lessor->leased == 0",
        file=0x556b5a6c87e8 "./src/lib/small/include/small/quota_lessor.h", line=104,
        function=0x556b5a6c99a0 <__PRETTY_FUNCTION__.15> "quota_lessor_destroy")
        at assert.c:101
    tarantool#6  0x0000556b5a1d46ca in quota_lessor_destroy (
        lessor=0x556b5a84a368 <main_cord+328>)
        at /home/shiny/dev/tarantool/src/lib/small/include/small/quota_lessor.h:104
    tarantool#7  0x0000556b5a1d4aee in slab_cache_destroy (cache=0x556b5a84a368 <main_cord+328>)
        at /home/shiny/dev/tarantool/src/lib/small/include/small/slab_cache_malloc.h:142
    tarantool#8  0x0000556b5a1db974 in cord_destroy (cord=0x556b5a84a220 <main_cord>)
        at /home/shiny/dev/tarantool/src/lib/core/fiber.c:1716
    tarantool#9  0x0000556b5a1dd793 in fiber_free ()
        at /home/shiny/dev/tarantool/src/lib/core/fiber.c:2052
    tarantool#10 0x0000556b59f3b2ac in tarantool_free ()
        at /home/shiny/dev/tarantool/src/main.cc:600
    tarantool#11 0x0000556b59f3c01f in main (argc=3, argv=0x556b5b35b0e8)
        at /home/shiny/dev/tarantool/src/main.cc:875

Looks like Tarantool has leaks of memory allocated thru mempool/small
allocators and misses destruction calls for these objects slab (it use
same quota as slab cache and cleanup quota on destruction).

Memory leak investigation is currently not easy task. We have a wide
range of suppressions that may hide positive cases like in this test.
Disabling suppresion is not possible as test-run stops to work due to
Tarantool breaks on FP leaks.

*TODO* add ticket reference.
nshy added a commit to nshy/small that referenced this pull request Jun 21, 2023
…troy

It currently breaks Tarantool debug runs. For example on running
'box/box/reconfigure.test':

    tarantool#5  0x00007fed360483d6 in __assert_fail (
        assertion=0x556b5a6c883d "lessor->leased == 0",
        file=0x556b5a6c87e8 "./src/lib/small/include/small/quota_lessor.h", line=104,
        function=0x556b5a6c99a0 <__PRETTY_FUNCTION__.15> "quota_lessor_destroy")
        at assert.c:101
    tarantool#6  0x0000556b5a1d46ca in quota_lessor_destroy (
        lessor=0x556b5a84a368 <main_cord+328>)
        at /home/shiny/dev/tarantool/src/lib/small/include/small/quota_lessor.h:104
    tarantool#7  0x0000556b5a1d4aee in slab_cache_destroy (cache=0x556b5a84a368 <main_cord+328>)
        at /home/shiny/dev/tarantool/src/lib/small/include/small/slab_cache_malloc.h:142
    tarantool#8  0x0000556b5a1db974 in cord_destroy (cord=0x556b5a84a220 <main_cord>)
        at /home/shiny/dev/tarantool/src/lib/core/fiber.c:1716
    tarantool#9  0x0000556b5a1dd793 in fiber_free ()
        at /home/shiny/dev/tarantool/src/lib/core/fiber.c:2052
    tarantool#10 0x0000556b59f3b2ac in tarantool_free ()
        at /home/shiny/dev/tarantool/src/main.cc:600
    tarantool#11 0x0000556b59f3c01f in main (argc=3, argv=0x556b5b35b0e8)
        at /home/shiny/dev/tarantool/src/main.cc:875

Looks like Tarantool has leaks of memory allocated thru mempool/small
allocators and misses destruction calls for these objects slab (it use
same quota as slab cache and cleanup quota on destruction).

Memory leak investigation is currently not easy task. We have a wide
range of suppressions that may hide positive cases like in this test.
Disabling suppresion is not possible as test-run stops to work due to
Tarantool breaks on FP leaks.

*TODO* add ticket reference.
nshy added a commit to nshy/small that referenced this pull request Jun 29, 2023
…troy

It currently breaks Tarantool debug runs. For example on running
'box/box/reconfigure.test':

    tarantool#5  0x00007fed360483d6 in __assert_fail (
        assertion=0x556b5a6c883d "lessor->leased == 0",
        file=0x556b5a6c87e8 "./src/lib/small/include/small/quota_lessor.h", line=104,
        function=0x556b5a6c99a0 <__PRETTY_FUNCTION__.15> "quota_lessor_destroy")
        at assert.c:101
    tarantool#6  0x0000556b5a1d46ca in quota_lessor_destroy (
        lessor=0x556b5a84a368 <main_cord+328>)
        at /home/shiny/dev/tarantool/src/lib/small/include/small/quota_lessor.h:104
    tarantool#7  0x0000556b5a1d4aee in slab_cache_destroy (cache=0x556b5a84a368 <main_cord+328>)
        at /home/shiny/dev/tarantool/src/lib/small/include/small/slab_cache_malloc.h:142
    tarantool#8  0x0000556b5a1db974 in cord_destroy (cord=0x556b5a84a220 <main_cord>)
        at /home/shiny/dev/tarantool/src/lib/core/fiber.c:1716
    tarantool#9  0x0000556b5a1dd793 in fiber_free ()
        at /home/shiny/dev/tarantool/src/lib/core/fiber.c:2052
    tarantool#10 0x0000556b59f3b2ac in tarantool_free ()
        at /home/shiny/dev/tarantool/src/main.cc:600
    tarantool#11 0x0000556b59f3c01f in main (argc=3, argv=0x556b5b35b0e8)
        at /home/shiny/dev/tarantool/src/main.cc:875

Looks like Tarantool has leaks of memory allocated thru mempool/small
allocators and misses destruction calls for these objects slab (it use
same quota as slab cache and cleanup quota on destruction).

Memory leak investigation is currently not easy task. We have a wide
range of suppressions that may hide positive cases like in this test.
Disabling suppresion is not possible as test-run stops to work due to
Tarantool breaks on FP leaks.

*TODO* add ticket reference.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants