One resource check worth doing before any of this: confirm the pool actually has free space and the dataset has no quota you forgot about.
An app that cannot write because the quota is reached fails at startup in exactly the same silent way as one that cannot write because of permissions, and it is a five-second thing to rule out.