We are currently migrating Bugzilla to GitHub issues.
Any changes made to the bug tracker now will be lost, so please do not post new bugs or make changes to them.
When we're done, all bug URLs will redirect to their equivalent location on the new bug tracker.

Bug 3586

Summary: Can't create OpenGL context 3.1 because of "undefined symbol: _udev_device_get_action"
Product: SDL Reporter: Vitaly Novichkov <admin>
Component: videoAssignee: Sam Lantinga <slouken>
Status: RESOLVED INVALID QA Contact: Sam Lantinga <slouken>
Severity: normal    
Priority: P2    
Version: HG 2.1   
Hardware: x86_64   
OS: Linux   

Description Vitaly Novichkov 2017-02-15 09:55:31 UTC
I don't know why this happens, but:
- I working on Linux Mint 18.1 with the Linux 4.4.0-59 kernel.
- My video card (at my job) is NVidia GeForse GT 730, using proprietary driver.
- My video card (at my home) is NVidia GeForse GT 210, using proprietary driver.
- I trying to create OpenGL context of version 3.1, but operation fails, because of "Failed loading udev_device_get_action: <mypathtoapp>/libSDL2-2.0.so: undefined symbol: _udev_device_get_action" error
- OpenGL of 2.1 creating successfully
- SAME application built for Windows and running on Wine on same machine, successfully creates OpenGL 3.1 context.
- Some time ago same application successfully used OpenGL 3.1 on same operating system with same hardware.
Comment 1 Vitaly Novichkov 2017-02-20 16:00:33 UTC
Full text of SDL_error:
=========================================================================
Failed loading udev_device_get_action: /path/to/libSDL2-2.0.so: undefined symbol: _udev_device_get_action
=========================================================================
Comment 2 Vitaly Novichkov 2017-03-14 09:57:29 UTC
Okay, I found why this happens: in real OpenGL context successfully initialized, but the failure is false because of SDL_GetError() was not empty before proceeding the context creation. The real failure source is SDL_Init() in the dynamic API function pointers filling.
In my program, I doing the external check of SDL_GetError() for a possible error message which may be set even returned pointer is not null, which was being caught from a failure of another function and has been confused me.

I think, the trouble of inability to find "_udev_device_get_action" will be another ticket if it was not created before my.