Odoo 9 с Python 2.7.13 на альпийском 3.5 segfault
Я хотел опубликовать это как ошибку, но у меня даже нет понятия, кому я должен сообщить об этом. Вот.
Я установил Odoo 9.0 на стандартную версию Alpine 3.5 с пакетом Python 2.7.13, и я также пробовал использовать ту же версию python, скомпилированную из исходных кодов, но результат идентичен:
Когда я перемещаюсь из любого представления в приложении Odoo на ошибки Python панели инструментов учета. Странно то, что если я скопирую URL-адрес панели инструментов учета и вставлю в панель навигации - таким образом, принудительно загрузив всю страницу - все будет работать нормально. Я попробовал GDB на интерпретаторе Python, чтобы увидеть, что происходит. Ошибка, по-видимому, в основном соответствует, но, к сожалению, информация, которую я получил, не так полезна
Thread 34 "python2" received signal SIGSEGV, Segmentation fault.
[Switching to LWP 13754]
0x00007ffff7dc52f5 in sem_timedwait () from /lib/ld-musl-x86_64.so.1
(gdb) bt
#0 0x00007ffff7dc52f5 in sem_timedwait () from /lib/ld-musl-x86_64.so.1
#1 0x0000000000000000 in ?? ()
В очень редких случаях ошибка другая, мне удалось один раз ее отловить в отладчике:
Thread 47 "python2" received signal SIGSEGV, Segmentation fault.
[Switching to LWP 4096]
0x00007ffff7a58b00 in _PyType_Lookup (type=type@entry=0x555555888280, name=name@entry=0x7ffff7e3fb90) at Objects/typeobject.c:2527
2527 Objects/typeobject.c: Permission denied.
(gdb) bt
#0 0x00007ffff7a58b00 in _PyType_Lookup (type=type@entry=0x555555888280, name=name@entry=0x7ffff7e3fb90) at Objects/typeobject.c:2527
#1 0x00007ffff7a4372c in _PyObject_GenericGetAttrWithDict (obj=0x7fffec6b66d0, name=0x7ffff7e3fb90, dict=0x0) at Objects/object.c:1389
#2 0x00007ffff7a8adb5 in PyEval_EvalFrameEx (f=f@entry=0x7fffedd8eb90, throwflag=throwflag@entry=0) at Python/ceval.c:2543
#3 0x00007ffff7a8e3c7 in PyEval_EvalCodeEx (co=0x7ffff7e3abb0, globals=<optimized out>, locals=locals@entry=0x0, args=<optimized out>, argcount=<optimized out>, kws=<optimized out>, kwcount=0, defs=0x7ffff7e60568, defcount=1, closure=0x0) at Python/ceval.c:3584
#4 0x00007ffff7a8c671 in fast_function (nk=0, na=<optimized out>, n=1, pp_stack=0x7fffebada318, func=0x7ffff7e53b18) at Python/ceval.c:4447
...
Трассировка стека в этом случае довольно длинная, это всего лишь фрагмент. Просто чтобы избавиться от этого, я попробовал как с ядром grsec, так и с ванильным, тот же результат.
Я довольно плохо знаком с Python, поэтому любые идеи о том, как отлаживать дальше, или обойти эту проблему будет принята с благодарностью.