A common example would be a slow microcontroller interface to a high speed clock domain. In this case, the controller sends an address + enable to the other clock domain. The other clock domain may need only to double-register the enable. This is one possible false path for the "synchronizer".
At this point, the address isn't changing. The microcontroller then waits for a few of its slow clock cycles for the data to be returned and accepts whatever is on the bus at that time. The fast clock domain simply holds the data constant while the enable signal is high. This may be 100+ ns. Thus, the path must meet the register setup time (small), at worst 3 fast cycles for en, and then the rest can be the output logic. 100ns - 12ns = 88ns of allowable delay in the data path! Not literally a TIG, but effectively it is.
(in this example, I've suggested 2 registers on the enable line in case it goes to any state machines that might be affected by async logic. If the address lines go to BRAM, they may also need to be double registered if the BRAM can be corrupted by S/H errors on the control lines. Some BRAM can be corrupted when the address S/H is not met during reads.)
The other common example would be async fifos, which are designed to allow unrelated clocks. In some cases, the tools will see a relation (eg, common PLL). This can result in absurd requirements placed on the part of the design specifically designed to deal with the lack of synchronous requirements!