Bug 1607154

Summary: glwDrawingAreaWidgetClass in GLwDrawA.h causing XtCreateWidget "glwidget" requires non-NULL widget class error
Product: Red Hat Enterprise Linux 7 Reporter: Trent D'Hooge <tdhooge>
Component: mesa-libGLwAssignee: Adam Jackson <ajax>
Status: CLOSED ERRATA QA Contact: Desktop QE <desktop-qa-list>
Severity: urgent Docs Contact:
Priority: urgent    
Version: 7.5CC: ajax, alanm, dkochuka, jcrumple, jwright, tgummels, tpelka, vpakolu
Target Milestone: rcKeywords: ZStream
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: mesa-libGLw-8.0.0-5.el7 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1715526 1715527 (view as bug list) Environment:
Last Closed: 2019-08-06 12:50:48 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1599298, 1707454, 1715526, 1715527    
Attachments:
Description Flags
test case for reproducing
none
possible patch to /usr/include/GL/GLwDrawA.h
none
fixed patch, sorry about that none

Description Trent D'Hooge 2018-07-22 16:19:07 UTC
Created attachment 1469790 [details]
test case for reproducing

Description of problem:

Error: XtCreateWidget "glwidget" requires non-NULL widget class

It looks like this is due to the declaration of glwDrawingAreaWidgetClass in GLwDrawA.h, which comes with the mesa-libGLw-devel package. That header has the line:
GLAPI WidgetClass glwDrawingAreaWidgetClass;
And particularly with dynamic linking, if the actual object (glwDrawingAreaWidgetClass) is not found elsewhere, it is assumed to be a definition (since no extern). But then that new variable is NULL.

This has been working well declaring that variable (there are 2 GLAPI WidgetClass variables there) as extern:
extern GLAPI WidgetClass glwDrawingAreaWidgetClass;

Version-Release number of selected component (if applicable):

mesa-libGLw-devel-8.0.0-4

How reproducible:

every time.

Steps to Reproduce:
attaching test case
gcc -c test.c
gcc test.o -L/usr/lib64 -lGLU -lGL -lXm -lXt -lX11 -lGLw -o test
./test
Error: XtCreateWidget "glwidget" requires non-NULL widget class


Actual results:


Expected results:

No error


Additional info:

attaching patch / workaround, not sure if this is the best way to address the issue.

Comment 2 Trent D'Hooge 2018-07-22 16:20:37 UTC
Created attachment 1469791 [details]
possible patch to /usr/include/GL/GLwDrawA.h

attached patch seems to address the issue

Comment 3 Trent D'Hooge 2018-07-23 16:26:24 UTC
Created attachment 1470005 [details]
fixed patch, sorry about that

Comment 10 Adam Jackson 2019-05-20 18:21:32 UTC
A test build of the upstream fix is available at:

https://people.redhat.com/ajackson/1607154

Comment 24 errata-xmlrpc 2019-08-06 12:50:48 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHEA-2019:2120