Стек в DLang в разных типах потоков.

Тема в разделе "WASM.LANGS", создана пользователем Psionic, 4 дек 2022.

  1. Psionic

    Psionic Member

    Публикаций:
    0
    Регистрация:
    25 сен 2008
    Сообщения:
    156
    В DLang существует такой тип потока как Fiber.
    import core.thread : Fiber;
    Вопрос к знатокам рантайма - а как в пущеных через Fiber исполнениях функционирует стек?
    Есть проблемы с пуском сишного кода (проблемный код написан на pure C) через эту штуку.
    [​IMG]

    Дизассембли
    [​IMG]

    Вот если запускать через файбер то спотыкается об попытку модификации защищенного стека.
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Что-то я очень сомниваюсь, что здесь есть знатоки дэшного рантайма, лучше спроси на форуме официального сайта, или хотя бы в ихней русской телеге.
     
  3. Psionic

    Psionic Member

    Публикаций:
    0
    Регистрация:
    25 сен 2008
    Сообщения:
    156
    В телеге спрашивал, по рантайму там ни в зуб ногой, всех интересуют высокоуровневые фичи.
     
  4. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    450
    стеком в Д вам руками заниматься не надо
    надо глянуть как у вас создается и зовется файбер
    пример https://tour.dlang.org/tour/en/multithreading/fibers
    + там есть линка на большее кол-во примеров

    может у вас образовалась рекурсия и таким образом сожрался стек?
     
  5. Psionic

    Psionic Member

    Публикаций:
    0
    Регистрация:
    25 сен 2008
    Сообщения:
    156
    Нет, рекурсии там нет точно - стек вызовов не глубокий и не рекурсивный.
    Крешит тут
    or qword ptr [rsp], 0x0
    Типа ссылается на немодифицируемую пямять.
     
  6. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Показывай полностью как вызываешь, а лучше ехе кидай еще. Судя по описанию в общих чертах фиберы работают также как и в винде. http://ddili.org/ders/d.en/fibers.html