Sorry, when I say "works" in the first two test cases I actually meant doesn't crash (not that the input is invalid).
I'll clarify:
glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA8, 32, 32);
glTexSubImage2D(GL_TEXTURE_2D, 1, 0, 0, 32, 32, GL_RGBA, GL_UNSIGNED_BYTE, data);
is not valid and should generate an error (INVALID_VALUE I thought, but it doesn't really matter), but does not crash
glTexStorage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 32, 32);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 32, 32, GL_RGBA, GL_UNSIGNED_BYTE, data);
is not valid and should generate an error (INVALID_VALUE), but does not crash
glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA8, 32, 32);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 32, 32, GL_RGBA, GL_UNSIGNED_BYTE, data);
is the case in our customer shipped code that is valid but crashes on Catalyst 13.6 Beta 2 drivers.
As long as the last test case works, does not crash, and produces the correct result I'm happy. I'll be sure to try again in the next beta.
Thanks for your time investigating the issue.
Mark