Skip to content

Out of memory error crash in Axis Python OpenGL #2510

@mbuesch

Description

@mbuesch

When I start up the sim/axis_mm.ini example on my Debian Bookworm or Debian Sid machines with the LinuxCNC 2.9 or LinuxCNC master branch, I get a strange out of memory crash in Python OpenGL code.

$:~/develop/git/linuxcnc/scripts$ ./linuxcnc
LINUXCNC - 2.9.0~pre1
Machine configuration directory is '/home/mb/develop/git/linuxcnc/configs/sim/axis'
Machine configuration file is 'axis_mm.ini'
Starting LinuxCNC...
linuxcnc TPMOD=tpmod HOMEMOD=homemod EMCMOT=motmod
Note: Using POSIX realtime
Found file(lib): /home/mb/develop/git/linuxcnc/lib/hallib/core_sim.hal
Found file(lib): /home/mb/develop/git/linuxcnc/lib/hallib/sim_spindle_encoder.hal
Found file(lib): /home/mb/develop/git/linuxcnc/lib/hallib/axis_manualtoolchange.hal
Found file(lib): /home/mb/develop/git/linuxcnc/lib/hallib/simulated_home.hal
note: MAXV     max: 53.340 units/sec 3200.400 units/min
note: LJOG     max: 53.340 units/sec 3200.400 units/min
note: LJOG default: 30.480 units/sec 1828.800 units/min
note: jog_order='XYZ'
note: jog_invert=set()
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/OpenGL/latebind.py", line 43, in __call__
    return self._finalCall( *args, **named )
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not callable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/mb/develop/git/linuxcnc/bin/axis", line 3964, in <module>
    get_coordinate_font(vars.dro_large_font.get())
  File "/home/mb/develop/git/linuxcnc/bin/axis", line 3842, in get_coordinate_font
    glnav.use_pango_font(coordinate_font, 0, 128)
  File "/home/mb/develop/git/linuxcnc/lib/python/glnav.py", line 65, in use_pango_font
    glBitmap(1, 0, 0, 0, 0, h-d, bytearray([0]*4))
  File "/usr/lib/python3/dist-packages/OpenGL/latebind.py", line 47, in __call__
    return self._finalCall( *args, **named )
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/OpenGL/wrapper.py", line 700, in wrapperCall
    raise err
  File "/usr/lib/python3/dist-packages/OpenGL/wrapper.py", line 693, in wrapperCall
    result = wrappedOperation( *cArguments )
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/OpenGL/platform/baseplatform.py", line 415, in __call__
    return self( *args, **named )
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/OpenGL/error.py", line 230, in glCheckError
    raise self._errorClass(
OpenGL.error.GLError: GLError(
	err = 1285,
	description = b'out of memory',
	baseOperation = glBitmap,
	pyArgs = (
		1,
		0,
		0,
		0,
		0,
		16.0,
		<OpenGL.arrays._buffers.Py_buffer object at 0x7fc4a2a1b5c0>,
	),
	cArgs = (
		1,
		0,
		0,
		0,
		0,
		16.0,
		<OpenGL.arrays._buffers.Py_buffer object at 0x7fc4a2a1b5c0>,
	),
	cArguments = (
		1,
		0,
		0,
		0,
		0,
		16.0,
		<OpenGL.arrays._buffers.Py_buffer object at 0x7fc4a2a1b5c0>,
	)
)
Shutting down and cleaning up LinuxCNC...

Here are the steps I follow to reproduce the issue:

  1. Happens during start of axis sim/axis_mm.ini example.

Information about my hardware and software:

This happens on my older PC with 8G system RAM with a very old PCI-E graphics card from 2009. Not sure how much graphics RAM it has. But it probably only has a couple hundred MB.
But it also happens on my new Ryzen based system with 24G system RAM. I think I set the graphics RAM to 1G.

I doubt that this really is an out of memory problem unless LinuxCNC needs that much graphics memory now.

I even tried to raise memlock limit to 4G on the older PC. Didn't help.

On the old PC I use Debian Bookworm and on the Ryzen I use Debian Sid.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions