bpo-34602: Avoid failures setting macOS stack resource limit by ned-deily · Pull Request #14546 · python/cpython (original) (raw)

When attempting to run the Odoo server on macOS Monterey (currently 12.4), it crashes with the following traceback:

Traceback (most recent call last):
  File "/Users/app/Code/odoo/odoo-bin", line 8, in <module>
    odoo.cli.main()
  File "/Users/app/Code/odoo/odoo/cli/command.py", line 61, in main
    o.run(args)
  File "/Users/app/Code/odoo/odoo/cli/server.py", line 179, in run
    main(args)
  File "/Users/app/Code/odoo/odoo/cli/server.py", line 173, in main
    rc = odoo.service.server.start(preload=preload, stop=stop)
  File "/Users/app/Code/odoo/odoo/service/server.py", line 1342, in start
    rc = server.run(preload, stop)
  File "/Users/app/Code/odoo/odoo/service/server.py", line 553, in run
    self.start(stop=stop)
  File "/Users/app/Code/odoo/odoo/service/server.py", line 491, in start
    set_limit_memory_hard()
  File "/Users/app/Code/odoo/odoo/service/server.py", line 83, in set_limit_memory_hard
    resource.setrlimit(rlimit, (config['limit_memory_hard'], hard))
ValueError: current limit exceeds maximum limit

Actually, this issue is not specific to Odoo but affects Python on macOS as a whole (see [1] and [2]).

As our memory management is based on Linux - which is our primary deployment target - and non-POSIX systems were already excluded, this commit escapes the rlimit modification on non-Linux systems to prevent this kind of issue.

References: [1] https://bugs.python.org/issue34602 [2] python/cpython#14546

Related issue: #79112

closes #93381

Signed-off-by: Xavier Morel (xmo) xmo@odoo.com