The proposal to upgrade SNS controlled canister has been executed but the canister has not been upgraded


We have an issue where our canister is not being upgraded even after a proposal executed.

Proposal 25 executed, the canister has not been upgraded.

We have reproduced the issue on a local replica, it is a candid interface compatibility issue and is fixed at Fix: fix candid interface compatibility for canister 'ic_panda_luckyp… · ldclabs/ic-panda@33c659e · GitHub

Then proposal 27 executed, the canister has not been upgraded again.

We retested this upgrade in a local replica and encountered no issues.

Additionally, we are unable to open any proposals after number 25 on the ICP dashboard, it says “An error occurred while loading the SNS proposal.”

@mraszyk Please help.

The issue is that the WASM is larger than 2MiB (WASM: length: 2128274) which makes the upgrade fail on mainnet since the upgrade involves a call from the SNS subnet to your application’s subnet. Locally, it works since the local replica has all canisters (SNS canisters and your application canisters on a single subnet). I’d recommend you to gzip the WASM to make its size lower than 2MiB.

1 Like

Hi, @mraszyk , I need your help again. Here’s another case where a proposal was successfully executed but the canister did not upgrade, and it’s not an issue with the wasm size.

This is an upgrade to the ICDex Trader canister; I just added an empty validate_withdraw function:

It would be great if the execution result of the proposal could return error messages.

In that case, it’s likely due to the post-upgrade hook failing given the argument payload you provided in the SNS proposal (e.g., doesn’t parse or is invalid for some other reason).

Agreed, but a naive implementation would come along with security risks for the SNS governance canister and thus it hasn’t been addressed so far.

1 Like

I don’t have experience writing Motoko programs, but I checked the source code and found no postupgrade-related logic.
I suspect the Motoko version might be too old; it can only compile in the dfx: 0.15.3 / moc: 0.10.3 environment.
It might still be necessary to have the ICLighthouse team take a look.