Size: a a a

2020 February 14

V

Vasilii Demidenok in ErlangRus
без on_load код работал нормаль и такой траблы не было насколько я помню
источник

СИ

Сергей Иванов in ErlangRus
Anton Kuranda
но есть и нормальные примеры, например у меня девочка-продакт, которая отвечает за общение с мпс может написать “пацаны, в этом цср поле OU надо заполнить вот таким значением”
с такими и каждый день можно общаться
мне кажется большее внимание надо уделять не методике переклеивания листочков а отладке технологических процессов.
источник

СИ

Сергей Иванов in ErlangRus
Vasilii Demidenok
Блин обнаружил забавную проблему на нифе.. если использовать on_load, то при перезагрузке модуля load код не вызывается. Вот такая хрень:
Erlang/OTP 20 ...
Eshell V9.3.3.9  (abort with ^G)
1> l(my_nif).
LOAD priv_data is 0x00007fd5d00c8cb0 0x00007fd5a8042570
{module,my_nif}
2> l(my_nif).
UPGRADE priv_data is 0x00007fd5d00ead70 0x00007fd5a8042570
{module,my_nif}
3> l(my_nif).
UNLOAD priv_data is 0x00007fd5a8042570
UPGRADE priv_data is 0x00007fd5d00c8cb0 0x00007fd5a8042570
{module,my_nif}
4> l(my_nif).
UNLOAD priv_data is 0x00007fd5a8042570
ну погоди - загрузка сишных бинарней это одно, а загрузка ерланговых бинарей в вм это другое. я так понимаю on_load относится к нифскому коду ?
источник

V

Vasilii Demidenok in ErlangRus
в онлоан у меня загрузка erlang:nif_load
источник

V

Vasilii Demidenok in ErlangRus
при обновлении модуля вызывается unload, но не вызывается load,
источник

V

Vasilii Demidenok in ErlangRus
после unload вызывать upgrade странно на мой взгляд
источник

V

Vasilii Demidenok in ErlangRus
т. е имхо не должно быть unload при l(my_nif)- а только upgrade
источник

V

Vasilii Demidenok in ErlangRus
то что выделено в логах капсом - вызов функций регистрируемых в нифе
источник

СИ

Сергей Иванов in ErlangRus
Vasilii Demidenok
то что выделено в логах капсом - вызов функций регистрируемых в нифе
я так понимаю что он уведомляет что модуль выгружен загружен обновлен.  если nif не менялся он остается на месте
источник

V

Vasilii Demidenok in ErlangRus
лог из нифа а не из модуля
источник

СИ

Сергей Иванов in ErlangRus
Vasilii Demidenok
лог из нифа а не из модуля
ну, о том и речь. nif прибит к оперативной памяти уже. модуль его загрузил. потом выгрузился, потом обновился. nif никуда не девался
источник

СИ

Сергей Иванов in ErlangRus
т.е. у тебя есть возможность даже данные какие-то сохранить между перезагрузками
источник

V

Vasilii Demidenok in ErlangRus
после unload?? как ты себе это видишь?
источник

V

Vasilii Demidenok in ErlangRus
у нифа вызывается unload колбек, ниф не знает очищать ему ресурсы или дальше последует upgrade
источник

СИ

Сергей Иванов in ErlangRus
Vasilii Demidenok
у нифа вызывается unload колбек, ниф не знает очищать ему ресурсы или дальше последует upgrade
а в old_priv_data что ? тогда действительно не очень понятно
источник

V

Vasilii Demidenok in ErlangRus
указатель на priv_data что былa деинициализированна в unload
источник

СИ

Сергей Иванов in ErlangRus
Vasilii Demidenok
после unload?? как ты себе это видишь?
а  с каким флагом вызваешь load_nif?
источник

LW

Lev Walkin in ErlangRus
Сергей Иванов
а в old_priv_data что ? тогда действительно не очень понятно
старые данные старого нифа?
источник

V

Vasilii Demidenok in ErlangRus
ага
источник

СИ

Сергей Иванов in ErlangRus
Lev Walkin
старые данные старого нифа?
ну тут речь, что не понятно как обращаться с этими данными, ведь на этапе unload они должны быть освобождены
источник