MySQL running delete trigger on truncate
TRUNCATE does not fire ON DELETE triggers in any 5.x version. But it does have to lock the table and have to wait for any other open transactions that hold locks on the table to release them.

That's what the process list is showing. There is a (transaction with a) delete query that is running and has some lock on the table and is blocking the TRUNCATE (which is Waiting for table metadata lock). As soon as the other transaction commits (or rolls back) and the lock is released, TRUNCATE will manage to get the metadata lock and continue.



There are some differences across the minor 5.x versions regarding the existence of any foreign key constraints that reference the table that affect how TRUNCATE is processed. See this question “TRUNCATE doesn't run ON DELETE trigger” true or false for details but this seems irrelevant in your case, since you are on 5.5, where the TRUNCATE would raise an error if there were any foreign key references from other tables.



On relevant matters, you should upgrade to the latest 5.5 version (5.5.49). Your servers are 4 years and 22 releases behind the latest 5.5 version. 

Since you edited that the staging server is 5.5.49 (that's good!) it would be best to update your dev servers to the same version.

I wouldn't entirely dismiss the possibility of a bug but we'll need more evidence to be convinced, like the output of SHOW ENGINE INNODB STATUS; when the issue appears (the Transactions part would show relevant info about locks and blocking).