At the moment, setShader/setShaderInput/setShaderAuto settings are not yet serialized, which is what the warning is telling you about. There is an open feature request about this here:
Thanks. I bypassed the problem by using a post-processing to update the shader attributes.
One thing I cannot bypass is the CollisionTraverser. I am dumping a self-defined class which has a NodePath member variable and a CollisionTraverser member variable. I have to suppress the CollisionTraverser before pickle.dump and reinitialize it again after pickle.load. Is it possible to make a serializable CollisionTraverser?