Shooting from the hip, there's two things I know that might explain this.
Firstly, the profiler generates *a lot* of data, is CPU intensive and often has it's wicked way with your code by injecting dynamic IL into it. So, now and again, profiling a long-running process just doesn't work. In such a case, you can either dial down the amount of information gathered (sampling mode is ideal for this) or profile in shorted bursts.
Secondly, we have a known issue that there's a race condition deep in the process that only seems to arise in sampling mode(!).
This is actually quite convenient since- if its failing in sampling mode, try something else; if its failing in the other mode, try sampling