Upvote:2
As a citizen you can't be denied entry once you arrive on US soil. You will still have to prove you're a citizen, but the expired US passport will go a long way to do that.
It is, however, still "unlawful" for a US citizen to enter the US without holding a valid US passport, no matter whether you have a different valid passport -- see 8 U.S.C. 1185(b) -- but on the other hand the law does not authorize any punishment for doing so, so it would appear the worst they can do to you is give you a bad day.
Plan to spend a good handful of hours in immigration limbo after landing -- that way any surprise is most likely to be in a pleasant direction.
NOTE THAT if you're flying from a Canadian airport with preclearance, the cannot-deny-entry-to-a-citizen principle does not apply, since you're not actually on US soil yet at the point where you would be turned away.
In any case, you should be showing only the Canadian passport to the airline at checkin; nothing illegal about that.