Comment 168 for bug 1268257

Revision history for this message
Leyli Cecil (leycec-3) wrote :

This bug is horrible and must die. My base intuition concurs with Brian Norris' prior commentary. Quoted for truth:

"I suspect that there is some sort of race condition in the provided build scripts written by Nvidia, and they are only showing up intermittently or under particular system configurations/states, so package reinstallation tends to work fine the second time.

Related: I see this comment in Nvidia's Makefile regarding the "new" build system in Linux >= 2.6:

# The new approach currently has its own share of problems, some of which
# are architectural difficulties with KBUILD, others minor annoyances. For
# this reason, an improved version of the NVIDIA Makefile is available to
# those experiencing difficulties.

So it sounds like they admit to having architectural difficulties here. I wonder where this "improved version" of the Makefile can be obtained..."

The difficulty of reliably reproducing this bug implies (however weakly) an upstream race condition.

Given Nvidia's intransigence in addressing this, it remains Canonical's responsibility to supply a temporary downstream fix. This is rapidly becoming a community embarrassment – which, if left unresolved, could metastasize into mainstream media attention. (Of the variety we'd rather not have.)

While a genuine solution is probably beyond our purview, the Ubuntu-specific nvidia packages could at least be refactored so as to grep the DKMS build log for the following offending lines and respond by attempting to silently reinstall such packages a second time:

 echo >&2 " ERROR: Kernel configuration is invalid."; \
 echo >&2 " include/generated/autoconf.h or include/config/auto.conf are missing.";\
 echo >&2 " Run 'make oldconfig && make prepare' on kernel src to fix it."; \

Given that reinstalling such packages does appear to (mostly) succeed, automating such reinstallation could be of general assistance. Certainly, that's better than nothing – which woefully appears to be the current approach.