Habilite subprocesos múltiples para usar std::thread: operación no permitida

Habilite subprocesos múltiples para usar std::thread: operación no permitida

Por lo general, solo uso máquinas Linux para trabajar, tienden a ser máquinas más antiguas y con poca potencia. De hecho, tengo Arch Linux en una máquina robusta y decidí intentar ejecutar un juego en ella. descargué eldemostración 101 de gestión de oficinapara ver si podía hacerlo funcionar. Lo descomprimí, entré a la carpeta, ejecuté $ chmod a+x OfficeManagement101y luego:

$ ./OfficeManagement101 
config file: /home/me/Downloads/om101-linux/config.json
jar: /home/me/Downloads/om101-linux/om101_drm_free.jar
mainClass: eu/tulevik/officemanagement101/desktop/DesktopLauncher
vmArg 0: -Xmx1G
jre: /home/me/Downloads/om101-linux/jre/lib/amd64/server/libjvm.so
Exception in thread "LWJGL Application" java.lang.ExceptionInInitializerError
    at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.setVSync(LwjglGraphics.java:555)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:122)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
    at org.lwjgl.opengl.LinuxDisplay.getAvailableDisplayModes(LinuxDisplay.java:954)
    at org.lwjgl.opengl.LinuxDisplay.init(LinuxDisplay.java:738)
    at org.lwjgl.opengl.Display.<clinit>(Display.java:138)
    ... 2 more
AL lib: (EE) alc_cleanup: 1 device not closed

Un poco de investigación en Internet me hizo hacerlo $ sudo pacman -S xorg-xrandr, la pantalla se vuelve negra pero luego aparece un nuevo error:

$ ./OfficeManagement101 
config file: /home/me/Downloads/om101-linux/config.json
jar: /home/me/Downloads/om101-linux/om101_drm_free.jar
mainClass: eu/tulevik/officemanagement101/desktop/DesktopLauncher
vmArg 0: -Xmx1G
jre: /home/me/Downloads/om101-linux/jre/lib/amd64/server/libjvm.so
terminate called after throwing an instance of 'std::system_error'
  what():  Enable multithreading to use std::thread: Operation not permitted
Aborted (core dumped)

Lo que me deja sin una buena idea de qué hacer a continuación. ¿Es esto algo que necesito solucionar en Linux? ¿Es un problema de C++ un poco de ambos? ¿Alguna ayuda?

Respuesta1

what(): Habilitar subprocesos múltiples para usar std::thread: Operación no permitida

Esto significa que el programa (o parte de él) no fue vinculado usando -pthreadla opción de GCC que vincula a la implementación de Pthreads en Glibc.

Estepodríafunciona, pero realmente la solución correcta es que el programa se construya correctamente con la -pthreadopción:

LD_PRELOAD=/usr/lib64/libpthread.so.0 ./OfficeManagement101 

información relacionada