Bug 16144

Summary: Ошибка при работе luaplugin 5.1 и liblua 5.1
Product: Sisyphus Reporter: ahtoh <ahtoh>
Component: verlihub-pluginsAssignee: Ivan Zakharyaschev <imz>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: barabashka, evg, imz, vvk
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on: 18557    
Bug Blocks:    

Description ahtoh 2008-06-23 18:47:59 MSD
Возникает след. Assertion библиотеки liblua

verlihub: lapi.c:57: index2adr: Assertion `idx != 0 && -idx <= L->top - L->base' failed.
Aborted

Возникает при попытке загрузить скрипт на lua, любой скрипт 
_даже не существующий_,
т.е. ошибка возникает при выполнении команды !luaload script_name

При общении с разработчиками пока ничего не ясно. Никогда подобной проблемы не встречали. Думают, что проблема в компиляции. т.е. у них почему-то всё работает.
Comment 1 Vitaly Lipatov 2008-06-25 10:21:00 MSD
В Сизиф отправлен verlihub-plugins-lua51-1.6-alt1.src.rpm
Тут более новая версия плагина с сайта.
Comment 2 ahtoh 2008-07-02 10:58:58 MSD
Ничего не изменилось. Тоже самое.
Comment 3 Vitaly Lipatov 2008-07-03 09:56:09 MSD
Можно увидеть
$ rpm -qa | grep verlihub
и 
$ rpm -q liblua
?
Comment 4 ahtoh 2008-07-07 00:25:11 MSD
[ahtoh@hub ~]$ rpm -qa | grep verlihub
verlihub-0.9.8d-alt1
libverlihub-devel-0.9.8d-alt1
verlihub-plugin-python-1.1-alt1
verlihub-plugins-lua51-1.6-alt1
libverlihub-0.9.8d-alt1
verlihub-plugins-0.1-alt1

[ahtoh@hub lib]$ rpm -q liblua5.1
liblua5.1-5.1.3-alt1
Comment 5 Vitaly Lipatov 2008-07-07 02:20:34 MSD
Попробуй с verlihub-plugins-0.1-alt2
Comment 6 ahtoh 2008-07-07 13:16:15 MSD
К сожалению тоже самое...
Comment 7 Vitaly Lipatov 2008-07-09 12:19:43 MSD
#15 0x0077f2f1 in lua_insert () from /usr/lib/liblua-5.1.so.0

Я так понимаю, всё начинается с вызова CallFunction:
bool cLuaInterpreter::CallFunction(char * func, char * args[])
{
lua_settop(mL, 0);
int base = lua_gettop(mL);
lua_pushliteral(mL, "_TRACEBACK");
lua_rawget(mL, LUA_GLOBALSINDEX);
lua_insert(mL, base);

Из реализации docall в самом liblua кажется, что base в нашем случае содержит неверное значение.
static int docall (lua_State *L, int narg, int clear) {
  int status;
  int base = lua_gettop(L) - narg;  /* function index */
  lua_pushcfunction(L, traceback);  /* push traceback function */
  lua_insert(L, base);  /* put it under chunk and args */
  signal(SIGINT, laction);
  status = lua_pcall(L, narg, (clear ? 0 : LUA_MULTRET), base);
Comment 8 ahtoh 2008-07-09 13:32:36 MSD
В итоге где проблема?
Comment 9 Vitaly Lipatov 2008-07-10 01:49:42 MSD
Я думаю что проблема в verlihub-plugins-lua51
или его совместимости с liblua.
Comment 10 Evgenii Terechkov 2008-10-26 18:21:41 MSK
Похоже, та же проблема и с awesome: падает с аналогичной диагностикой при невыясненных условиях.

Ругань сейчас не приведу - .xsession-errors* стираются при startx, но, полагаю, через минуток 10-20 оно снова благополучно упадёт.
Comment 11 Evgenii Terechkov 2008-10-26 19:49:24 MSK
awesome: lapi.c:573: lua_rawgeti: Assertion `L->top < L->ci->top' failed. - мозможно, не единственный вариант. Вроде и с index2adr было...
Comment 12 Evgenii Terechkov 2008-11-01 17:12:32 MSK
В общем, это скорее проблема в liblua. Откат конфига awesome на версию по умолчанию останавливает падения. Т.е., возможно некорректный lua-код приводит к проблемам с выделением памяти в луа (почитал код, так понимаю он как раз ответственен на подсчет ссылок на объекты в памяти).
Comment 13 barabashka 2009-04-16 21:43:36 MSD
(В ответ на комментарий №12)
> В общем, это скорее проблема в liblua. Откат конфига awesome на версию по
> умолчанию останавливает падения. Т.е., возможно некорректный lua-код приводит к
> проблемам с выделением памяти в луа (почитал код, так понимаю он как раз
> ответственен на подсчет ссылок на объекты в памяти).

Обновил версию до 5.1.4.

git.altlinux.org/people/barabashka/packages/lua5.git
Comment 14 barabashka 2009-04-16 21:47:18 MSD
(В ответ на комментарий №13)
> (В ответ на комментарий №12)
> > В общем, это скорее проблема в liblua. Откат конфига awesome на версию по
> > умолчанию останавливает падения. Т.е., возможно некорректный lua-код приводит к
> > проблемам с выделением памяти в луа (почитал код, так понимаю он как раз
> > ответственен на подсчет ссылок на объекты в памяти).
> 
> Обновил версию до 5.1.4.
> 
> git.altlinux.org/people/barabashka/packages/lua5.git

Падает awesome с таким криком

awesome: lapi.c:432: lua_pushnumber: Assertion `L->top < L->ci->top' failed.