Estos días estoy realizando pruebas con OpenERP: un ERP open source basado en Python que día a día va ganando terreno a otros ERP más conocidos como OpenBravo.
Durante la instalación de OpenERP en un servidor Centos 6 limpio, con Python 2.6.6, al arrancar OpenERP me encontré con esto:
-bash-4.1$ ./openerp-server 2012-03-17 12:00:05,432 1395 INFO ? openerp: OpenERP version 6.1-1 2012-03-17 12:00:05,433 1395 INFO ? openerp: addons paths: /opt/openerp/server/openerp/addons 2012-03-17 12:00:05,433 1395 INFO ? openerp: database hostname: localhost 2012-03-17 12:00:05,434 1395 INFO ? openerp: database port: 5432 2012-03-17 12:00:05,434 1395 INFO ? openerp: database user: openerp 2012-03-17 12:00:05,457 1395 INFO ? openerp.service.netrpc_server: starting NET-RPC service on 0.0.0.0:8070 2012-03-17 12:00:05,458 1395 INFO ? openerp.netsvc: Starting 1 services 2012-03-17 12:00:05,675 1395 INFO ? openerp.wsgi.core: HTTP service (werkzeug) running on 0.0.0.0:8069 2012-03-17 12:00:06,003 1395 INFO ? openerp.addons.web: embedded mode python: Python/compile.c:3437: stackdepth_walk: Assertion `depth >= 0' failed. Abortado
Investigando, el error está reportado en el tracker de OpenERP, aunque realmente no es un bug de OpenERP, si no de Python: el problema viene cuando en código anidas más de 4 if consecutivos, y es facilmente reproducible:
$python -c "[1 for x in () if 1 if 1 if 1 if 1]"
python: Python/compile.c:3437: stackdepth_walk: Assertion `depth >= 0' failed.
Abortado
Este bug solventado en la versión de Python 2.6.7, pero en CentOS 6, la versión disponible vía repositorios oficiales es la 2.6.6. Está reportado, pero mientras no realicen la actualización, solo nos queda realizar una instalación de Python 2.6.7 manual desde el código fuente y utilizar make altinstall o alernatives para poder tener ambas versiones.