This code stil get's it into recursion somehow: if model.model == x2m_model.model: # we need to remove current resource_id from the many2many to prevent an infinit loop if resource_id in field_resource_ids: field_resource_ids.remove(resource_id) data.update(self.get_data(cr, SUPERUSER_ID, pool, field_resource_ids, x2m_model, method)) >>> traceback <<< File "/usr/lib/python2.7/threading.py", line 524, in __bootstrap self.__bootstrap_inner() File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner self.run() File "/usr/lib/python2.7/threading.py", line 504, in run self.__target(*self.__args, **self.__kwargs) File "/usr/lib/python2.7/SocketServer.py", line 582, in process_request_thread self.finish_request(request, client_address) File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/lib/python2.7/SocketServer.py", line 638, in __init__ self.handle() File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 181, in handle rv = BaseHTTPRequestHandler.handle(self) File "/usr/lib/python2.7/BaseHTTPServer.py", line 340, in handle self.handle_one_request() File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 214, in handle_one_request return self.run_wsgi() File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 159, in run_wsgi execute(app) File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 146, in execute application_iter = app(environ, start_response) File "/erp/41/openerp/service/wsgi_server.py", line 415, in application return werkzeug.contrib.fixers.ProxyFix(application_unproxied)(environ, start_response) File "/usr/lib/python2.7/dist-packages/werkzeug/contrib/fixers.py", line 125, in __call__ return self.app(environ, start_response) File "/erp/41/openerp/service/wsgi_server.py", line 403, in application_unproxied result = handler(environ, start_response) File "/erp/41/openerp/addons/web/http.py", line 502, in __call__ return self.dispatch(environ, start_response) File "/erp/41/openerp/addons/web/http.py", line 472, in __call__ return self.app(environ, start_wrapped) File "/usr/lib/python2.7/dist-packages/werkzeug/wsgi.py", line 411, in __call__ return self.app(environ, start_response) File "/erp/41/openerp/addons/web/http.py", line 527, in dispatch result = handler(request) File "/erp/41/openerp/addons/web/http.py", line 591, in return lambda request: JsonRequest(request).dispatch(method) File "/erp/41/openerp/addons/web/http.py", line 203, in dispatch response["result"] = method(self, **self.params) File "/erp/41/openerp/addons/web/controllers/main.py", line 1129, in call_kw return self._call_kw(req, model, method, args, kwargs) File "/erp/41/openerp/addons/web/controllers/main.py", line 1121, in _call_kw return getattr(req.session.model(model), method)(*args, **kwargs) File "/erp/41/openerp/addons/web/session.py", line 43, in proxy result = self.proxy.execute_kw(self.session._db, self.session._uid, self.session._password, self.model, method, args, kw) File "/erp/41/openerp/addons/web/session.py", line 31, in proxy_method result = self.session.send(self.service_name, method, *args) File "/erp/41/openerp/addons/web/session.py", line 90, in send return openerp.netsvc.dispatch_rpc(service_name, method, args) File "/erp/41/openerp/netsvc.py", line 293, in dispatch_rpc result = ExportService.getService(service_name).dispatch(method, params) File "/erp/41/openerp/service/web_services.py", line 658, in dispatch res = fn(db, uid, *params) File "/erp/41/openerp/osv/osv.py", line 188, in execute_kw return self.execute(db, uid, obj, method, *args, **kw or {}) File "/erp/41/openerp/osv/osv.py", line 131, in wrapper return f(self, dbname, *args, **kwargs) File "/erp/41/openerp/osv/osv.py", line 197, in execute res = self.execute_cr(cr, uid, obj, method, *args, **kw) File "/erp/41/openerp/addons/audittrail/audittrail.py", line 513, in execute_cr return self.log_fct(cr, uid, model, method, fct_src, *args, **kw) File "/erp/41/openerp/addons/audittrail/audittrail.py", line 294, in log_fct old_values = self.get_data(cr, uid_orig, pool, res_ids, model, method) File "/erp/41/openerp/addons/audittrail/audittrail.py", line 354, in get_data data.update(self.get_data(cr, SUPERUSER_ID, pool, field_resource_ids, x2m_model, method)) File "/erp/41/openerp/addons/audittrail/audittrail.py", line 354, in get_data data.update(self.get_data(cr, SUPERUSER_ID, pool, field_resource_ids, x2m_model, method)) File "/erp/41/openerp/addons/audittrail/audittrail.py", line 354, in get_data data.update(self.get_data(cr, SUPERUSER_ID, pool, field_resource_ids, x2m_model, method)) File "/erp/41/openerp/addons/audittrail/audittrail.py", line 354, in get_data data.update(self.get_data(cr, SUPERUSER_ID, pool, field_resource_ids, x2m_model, method)) File "/erp/41/openerp/addons/audittrail/audittrail.py", line 354, in get_data data.update(self.get_data(cr, SUPERUSER_ID, pool, field_resource_ids, x2m_model, method)) File "/erp/41/openerp/addons/audittrail/audittrail.py", line 328, in get_data for resource in resource_pool.read(cr, SUPERUSER_ID, res_ids): File "/erp/41/openerp/osv/orm.py", line 3604, in read result = self._read_flat(cr, user, select, fields, context, load) File "/erp/41/openerp/osv/orm.py", line 3712, in _read_flat res2 = self._columns[val[0]].get(cr, self, ids, val, user, context=context, values=res) File "/erp/41/openerp/osv/fields.py", line 1131, in get result = self._fnct(obj, cr, uid, ids, name, self._arg, context) File "/erp/41/openerp/addons/mail/mail_thread.py", line 151, in _get_followers user_pid = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0] File "/erp/41/openerp/addons/base/res/res_users.py", line 799, in read res = super(users_view, self).read(cr, uid, ids, fields, context=context, load=load) File "/erp/41/openerp/addons/base/res/res_users.py", line 272, in read result = super(res_users, self).read(cr, uid, ids, fields=fields, context=context, load=load) File "/erp/41/openerp/osv/orm.py", line 3604, in read result = self._read_flat(cr, user, select, fields, context, load) File "/erp/41/openerp/osv/orm.py", line 3724, in _read_flat res2 = self._columns[f].get(cr, self, ids, f, user, context=context, values=res) File "/erp/41/openerp/osv/fields.py", line 466, in get context=context)) File "/erp/41/openerp/addons/base/res/res_partner.py", line 423, in name_get traceback.print_stack() >>> end of traceback <<<