I don't know if whether I'm doing it wrong or it just doesn't work, but my cannon tube (see attached file) doesn't want to limit the local space. It just limits the world space. I reproduced it with a very simple setup (see second attached file). It seems like the local space wont pass correctly through an constraint. Hope you'll fix it soon.
Looks like you might be running into some kind of gimbal-lock issues here.
As a workaround, you could try the following setup:
1) Place an Empty at the same location as Cube.001
2) Give the Empty the TrackTo constraint (pointing to Cube), and remove the
3) Parent Cube.001 to the Empty (NOTE: do this while the constraint is disabled, so that they are both aligned in the same way)
Thanks for the nice workaround, it works pretty nice. Although I guess it isn't needed =) I found out that the Child-Of-Constraint (COC) makes a mess out of parenting... Having the Limit-Location-Constraint (LLC) above the COC limits to the local space (no matter which space is selected). Having the LLC at the bottom limits the world space (no matter which space is selected). It might be because I think of the COC as a normal parent-child-relation and don't understand some things that are different between those two, but I don't guess it's 100% working right.
The Child-Of Constraint has this kind of bugs for a long time already. There are many open bugs considering this constraint inside the tracker. Somehow it leads to the situation that children are evaluated in the wrong space.