Unreal Engine on Arch Linux - "Could not create OpenGL 3.2 context, SDL error"

Dear community,

I have compiled the UE4Editor in Linux (with Arch Linux), but when I run the Editor I get an error saying that the OpenGL context could not be created, being an error from SDL. Is there any basic mistake I am doing? I’ve followed the Linux guide the closest I could, but I did not use the PKBUILD version of the editor because it is outdated, instead I downloaded the git one version 4.8. Any help on this error is very useful, thanks in advance.

$ primusrun ./UE4Editor -nosplash
Using binned.
Increasing per-process limit of core file size to infinity.
[2015.07.18-02.50.37:285][  0]LogInit:Display: Running engine without a game
[2015.07.18-02.50.37:285][  0]LogInit:Display: RandInit(2105884644) SRandInit(2105884649).
[2015.07.18-02.50.37:285][  0]LogTaskGraph: Started task graph with 4 named threads and 7 total threads.
[2015.07.18-02.50.37:285][  0]LogStats: Stats thread started
[2015.07.18-02.50.37:285][  0]LogInit: Version: 4.8.2-0+++depot+UE4-Releases+4.8
[2015.07.18-02.50.37:285][  0]LogInit: API Version: 0
[2015.07.18-02.50.37:285][  0]LogInit: Compiled (64-bit): Jul 17 2015 22:45:19
[2015.07.18-02.50.37:285][  0]LogInit: Compiled with Clang: 3.6.2 (tags/RELEASE_362/final)
[2015.07.18-02.50.37:285][  0]LogInit: Build Configuration: Development
[2015.07.18-02.50.37:285][  0]LogInit: Branch Name: ++depot+UE4-Releases+4.8
[2015.07.18-02.50.37:285][  0]LogInit: Command line:  -nosplash
[2015.07.18-02.50.37:285][  0]LogInit: Base directory: /home/cristobal/gamedev/UnrealEngine/Engine/Binaries/Linux/
[2015.07.18-02.50.37:285][  0]LogInit: Rocket: 0
[2015.07.18-02.50.37:291][  0]LogInit: Using libcurl 7.38.0
[2015.07.18-02.50.37:291][  0]LogInit:  - built for x86_64-unknown-linux-gnu
[2015.07.18-02.50.37:292][  0]LogInit:  - supports SSL with OpenSSL/1.0.1i
[2015.07.18-02.50.37:292][  0]LogInit:  - supports HTTP deflate (compression) using libz 1.2.5
[2015.07.18-02.50.37:292][  0]LogInit:  - other features:
[2015.07.18-02.50.37:292][  0]LogInit:      CURL_VERSION_SSL
[2015.07.18-02.50.37:292][  0]LogInit:      CURL_VERSION_LIBZ
[2015.07.18-02.50.37:292][  0]LogInit:      CURL_VERSION_IPV6
[2015.07.18-02.50.37:292][  0]LogInit:      CURL_VERSION_ASYNCHDNS
[2015.07.18-02.50.37:292][  0]LogInit:      CURL_VERSION_LARGEFILE
[2015.07.18-02.50.37:292][  0]LogInit:      CURL_VERSION_TLSAUTH_SRP
[2015.07.18-02.50.37:292][  0]LogInit:  Libcurl: checking if '/etc/pki/tls/certs/ca-bundle.crt' exists
[2015.07.18-02.50.37:292][  0]LogInit:  Libcurl: checking if '/etc/ssl/certs/ca-certificates.crt' exists
[2015.07.18-02.50.37:292][  0]LogInit:  CurlRequestOptions (configurable via config and command line):
[2015.07.18-02.50.37:292][  0]LogInit:  - bVerifyPeer = true  - Libcurl will verify peer certificate
[2015.07.18-02.50.37:292][  0]LogInit:  - bUseHttpProxy = false  - Libcurl will NOT use HTTP proxy
[2015.07.18-02.50.37:292][  0]LogInit:  - bDontReuseConnections = false  - Libcurl will reuse connections
[2015.07.18-02.50.37:292][  0]LogInit:  - CertBundlePath = /etc/ssl/certs/ca-certificates.crt  - Libcurl will set CURLOPT_CAINFO to it
[2015.07.18-02.50.37:295][  0]LogOnline:Warning: No default platform service specified for OnlineSubsystem
[2015.07.18-02.50.37:366][  0]LogInit: Presizing for 0 objects not considered by GC, pre-allocating 0 bytes.
[2015.07.18-02.50.37:372][  0]LogInit: Object subsystem initialized
[2015.07.18-02.50.37:373][  0]LogInit: Initializing SDL.
[2015.07.18-02.50.37:482][  0]LogInit: Display metrics:
[2015.07.18-02.50.37:482][  0]LogInit:   PrimaryDisplayWidth: 1920
[2015.07.18-02.50.37:482][  0]LogInit:   PrimaryDisplayHeight: 1080
[2015.07.18-02.50.37:482][  0]LogInit:   PrimaryDisplayWorkAreaRect:
[2015.07.18-02.50.37:482][  0]LogInit:     Left=0, Top=27, Right=1920, Bottom=1080
[2015.07.18-02.50.37:482][  0]LogInit:   VirtualDisplayRect:
[2015.07.18-02.50.37:482][  0]LogInit:     Left=0, Top=27, Right=1920, Bottom=1080
[2015.07.18-02.50.37:482][  0]LogInit:   TitleSafePaddingSize: X=0.000 Y=0.000
[2015.07.18-02.50.37:482][  0]LogInit:   ActionSafePaddingSize: X=0.000 Y=0.000
[2015.07.18-02.50.37:482][  0]LogInit:   Number of monitors: 1
[2015.07.18-02.50.37:482][  0]LogInit:     Monitor 0
[2015.07.18-02.50.37:482][  0]LogInit:       Name: 0
[2015.07.18-02.50.37:482][  0]LogInit:       ID: display0
[2015.07.18-02.50.37:482][  0]LogInit:       NativeWidth: 1920
[2015.07.18-02.50.37:482][  0]LogInit:       NativeHeight: 1080
[2015.07.18-02.50.37:482][  0]LogInit:       bIsPrimary: true
[2015.07.18-02.50.37:482][  0]LogInit: Selected Device Profile: [Linux]
[2015.07.18-02.50.37:483][  0]LogInit: Applying CVar settings loaded from the selected device profile: [Linux]
[2015.07.18-02.50.37:492][  0]LogInit: Linux hardware info:
[2015.07.18-02.50.37:492][  0]LogInit:  - this process' id (pid) is 18690, parent process' id (ppid) is 9727
[2015.07.18-02.50.37:492][  0]LogInit:  - we are not running under debugger
[2015.07.18-02.50.37:492][  0]LogInit:  - machine network name is 'orion'
[2015.07.18-02.50.37:492][  0]LogInit:  - we're logged in locally
[2015.07.18-02.50.37:492][  0]LogInit:  - Number of physical cores available for the process: 4
[2015.07.18-02.50.37:492][  0]LogInit:  - Number of logical cores available for the process: 8
[2015.07.18-02.50.37:492][  0]LogInit:  - Memory allocator used: binned
[2015.07.18-02.50.37:492][  0]LogInit: Linux-specific commandline switches:
[2015.07.18-02.50.37:492][  0]LogInit:  -nodwarf (currently OFF): suppress parsing of DWARF debug info (callstacks will be generated faster, but won't have line numbers)
[2015.07.18-02.50.37:492][  0]LogInit:  -ansimalloc - use malloc()/free() from libc (useful for tools like valgrind and electric fence)
[2015.07.18-02.50.37:492][  0]LogInit:  -jemalloc - use jemalloc for all memory allocation
[2015.07.18-02.50.37:492][  0]LogInit:  -binnedmalloc - use binned malloc  for all memory allocation
[2015.07.18-02.50.37:492][  0]LogInit:  -httpproxy=ADDRESS:PORT - redirects HTTP requests to a proxy (only supported if compiled with libcurl)
[2015.07.18-02.50.37:492][  0]LogInit:  -reuseconn - allow libcurl to reuse HTTP connections (only matters if compiled with libcurl)
[2015.07.18-02.50.37:492][  0]LogInit:  -virtmemkb=NUMBER - sets process virtual memory (address space) limit (overrides VirtualMemoryLimitInKB value from .ini)
[2015.07.18-02.50.37:492][  0]LogInit: Setting LC_NUMERIC to en_US
[2015.07.18-02.50.37:492][  0]LogInit:  - Physical RAM available (not considering process quota): 8 GB (7906 MB, 8096748 KB, 8291069952 bytes)
[2015.07.18-02.50.37:497][  0]LogTextLocalizationManager: The requested culture ('en_US') has no localization data; parent culture's ('en') localization data will be used.
[2015.07.18-02.50.37:601][  0]LogTextLocalizationManager:Warning: Loaded localization resources contain conflicting entries for (Namespace:ContentBrowser, Key:ImportAssetToolTip):
Localization Resource: (/home/cristobal/gamedev/UnrealEngine/Engine/Content/Localization/Editor/en/Editor.locres) Source String Hash: (-630476809) Localized String: (Import to {0}...)
Localization Resource: (/home/cristobal/gamedev/UnrealEngine/Engine/Content/Localization/Editor/en/Editor.locres) Source String Hash: (1271782899) Localized String: (Imports an asset from file to this folder.)
Fatal error: [File:/home/cristobal/gamedev/UnrealEngine/Engine/Source/Runtime/OpenGLDrv/Private/Linux/OpenGLLinux.cpp] [Line: 183] 
_PlatformCreateOpenGLContextCore - Could not create OpenGL 3.2 context, SDL error: 'Could not create GL context: GLXBadFBConfig'
[2015.07.18-02.50.37:754][  0]LogLinux:Error: appError called: Assertion failed: Assertion failed:  [File:/home/cristobal/gamedev/UnrealEngine/Engine/Source/Runtime/OpenGLDrv/Private/Linux/OpenGLLinux.cpp] [Line: 183] 
_PlatformCreateOpenGLContextCore - Could not create OpenGL 3.2 context, SDL error: 'Could not create GL context: GLXBadFBConfig'

Signal 11 caught.
EngineCrashHandler: Signal=11
[2015.07.18-02.50.37:777][  0]LogLinux: === Critical error: ===
Unhandled Exception: SIGSEGV: invalid attempt to access memory at address 0x00000003

[2015.07.18-02.50.37:778][  0]LogLinux: Assertion failed: Assertion failed:  [File:/home/cristobal/gamedev/UnrealEngine/Engine/Source/Runtime/OpenGLDrv/Private/Linux/OpenGLLinux.cpp] [Line: 183] 
_PlatformCreateOpenGLContextCore - Could not create OpenGL 3.2 context, SDL error: 'Could not create GL context: GLXBadFBConfig'


[Callstack]  02  0x00007fbf95ca95d2  ReportCrash(FLinuxCrashContext const&)
[Callstack]  03  0x000055f1e60d3b90  EngineCrashHandler(FGenericCrashContext const&)
[Callstack]  04  0x00007fbf95cace26  PlatformCrashHandler(int, siginfo_t*, void*)
[Callstack]  05  0x00007fbf8aea35b0  /usr/lib/libc.so.6(+0x335b0) [0x7fbf8aea35b0]
[Callstack]  06  0x00007fbf95cb6d98  FOutputDeviceLinuxError::Serialize(wchar_t const*, ELogVerbosity::Type, FName const&)
[Callstack]  07  0x00007fbf95d6b6e5  FOutputDevice::Logf(wchar_t const*, ...)
[Callstack]  08  0x00007fbf95d4e0b1  FDebug::AssertFailed(char const*, char const*, int, wchar_t const*, ...)
[Callstack]  09  0x00007fbf7269f329  /home/cristobal/gam[2015.07.18-02.50.37:786][  0]LogExit: Executing StaticShutdownAfterError
Starting ../../../engine/binaries/linux/crashreportclient
[2015.07.18-02.50.37:787][  0]LogGenericPlatformMisc: FPlatformMisc::RequestExit(1)
Aborted (core dumped)

I’m having exactly the same problem on Ubuntu 15.10! I’m running on a virtual machine though.

Related topics:

This error says that SDL was unable to open an OpenGL viewport supporting version 3.2. This is typically due to incompatible or obsolete video drivers being used by the X11 desktop.