Debug an INVPC exception

Hi. I have an INVPC exception that I am trying to debug on a Cortex M4 STM32. The stack contains the following values:

0x08003555 xPSR
0x08006824 PC
0x08006824 LR
0x00000000 R12
0x08003341 R3
0x08006824 R2
0x0000FFFF R0

The PC and LR both point to an address just beyond the end of the used flash memory, specifically this:

0x08006804: 08006824 $h.. DCD 134244388
0x08006808: 20000000 ... DCD 536870912
0x0800680c: 000000bc .... DCD 188
0x08006810: 08005b30 0[.. DCD 134241072
0x08006814: 080068e0 .h.. DCD 134244576
0x08006818: 200000bc ... DCD 536871100
0x0800681c: 00001a34 4... DCD 6708
0x08006820: 08005b40 @[.. DCD 134241088

Everything after that in the list file is RAM data, debugging info etc.

Firstly I don't understand why this has caused an INVPC exception, because although the data at this address probably isn't a valid op-code it is a valid address to jump to. It's within flash memory and 32 bit aligned.

Secondly I want to figure out what caused this exception, but I'm not sure how to do it. I can't even reproduce it on demand at the moment, I have to run the system for a day or two before it happens.