The problem is that you need LIBGL_ALWAYS_INDIRECT defined to run compiz but when you do a session save/restore it saves the real compiz program instead of our wrapper script that sets up the environment so compiz can run. gnome-session isn't doing anything wrong, compiz isn't doing anything wrong, it's the combination of the two plus the oddities of Xorg/driver design that make this situation broken. There might be a fix, someday, but it'll be a major change in the way drivers and/or GLX work.
The problem is that you need LIBGL_ALWAYS_ INDIRECT defined to run compiz but when you do a session save/restore it saves the real compiz program instead of our wrapper script that sets up the environment so compiz can run. gnome-session isn't doing anything wrong, compiz isn't doing anything wrong, it's the combination of the two plus the oddities of Xorg/driver design that make this situation broken. There might be a fix, someday, but it'll be a major change in the way drivers and/or GLX work.