Skip to content
This repository was archived by the owner on Oct 28, 2025. It is now read-only.
This repository was archived by the owner on Oct 28, 2025. It is now read-only.

Segmentation fault #23

@rosik

Description

@rosik

mAX, [09/07/2023 18:04]
Последняя весрия из исходников выдает вот такое

[supervisor:92944] ipc message from child: Err(InvalidMarkerRead(Error { kind: UnexpectedEof, message: "failed to fill whole buffer" }))
[supervisor:92944] subprocess finished: Signaled(Pid(92945), SIGABRT, false)

в дебаге вот этот unwrap() падал
https://git.picodata.io/picodata/picodata/picodata/-/blob/master/src/main.rs#L172

mAX, [10/07/2023 12:56]
да, ошибка где-то в либе, немного исследовал проблему
подумал может со старой версией tarantool-module “0.6.2” не работает.. обновил до “1.1.0”

в новой версии десериализация перечеслений сломалась
похоже она проходит с serde_plain в тестах, но если взять yaml, то уже не работает
Проблема вот в этой строке

let tmp = <&str>::deserialize(deserializer)?;

Заменил <&str> на String и yaml дисериализается

Простейшая демка работает с picodata, start_service вызывается спамит в консоль
Но как только импортирую пакет с криптографией ring, то уже падает

use ring::aead::MAX_TAG_LEN;  // импорт приводит к падению

#[no_mangle]
pub extern "C" fn start_service(
    _: ::tarantool::tuple::FunctionCtx,
    _: ::tarantool::tuple::FunctionArgs
) -> std::os::raw::c_int
{
    println!("RUST IS ALIVE");
    0
}

вероятно ring статически инициализирует себе что-то
ну и естественно при импорте в сошке появляется много новых символов
Но старый тарантул с этим всем отлично работает

mAX, [10/07/2023 13:45]
т.к. падает в NSProcessInfo arguments проверил такое..

для теста получаю аргументы запущенного процесса

println!("args {:?}", std::env::args());

в оригинальном tarantool все нормально, печатает

args Args {
    inner: [
        "/opt/homebrew/Cellar/tarantool/2.11.0_1/bin/tarantool",
        "app/app.lua",
    ],
}

в picodata падает

Segmentation fault
  code: SEGV_ACCERR
  addr: 0x0
  context: 0x105dfa758
  siginfo: 0x105dfa6f0
Current time: 1688985877
Please file a bug at https://github.com/tarantool/tarantool/issues
Attempting backtrace... Note: since the server has already crashed, 
this may fail as well
#1  0x425f000101419a14 in crash_signal_cb+4782541329290756228
#2  0xd334000183b32a24 in _sigtramp+15218789040791748664
#3  0x9710001098eed40 in std::env::args_os::h96ff0542fae51d42+680325018709655732
#4  0xfb788001098eec74 in std::env::args::h1590a8f54bc20489+18120373838213546012
#5  0x1a5c0001098da298 in start_service+1899393142843506744
#6  0xe17c800101571b24 in module_func_call+16248002293134262448
#7  0xfd0f0001015d1378 in func_c_call+18234793416246427716
#8  0xaf240001015d18c8 in func_call_no_access_check+12620212055798972624
#9  0x673480010167ee08 in lbox_func_call+7436709622183887068
#10 0x64010001017099f4 in lj_BC_FUNCC+7206040878769504300
#11 0x8d23000101722f6c in lj_cf_dofile+10169972383532712028
#12 0x6e560001017099f4 in lj_BC_FUNCC+7950542192169189420
#13 0x3169000101710de8 in lua_pcall+3560376980413087916
#14 0xc96b80010117b3ac in tlua::object::imp::call::h2ba83543273cd945+14513834961619911104
#15 0xf311000101369050 in tlua::object::Call::into_call_with::h2fe43b06c7c7f001+17514780425820569744
#1[supervisor:56412] ipc message from child: None
[supervisor:56412] subprocess finished: Signaled(Pid(56414), SIGABRT, false)

Process finished with exit code 6

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions