You can enlarge the stack space, but I suspect that's just a "stopgap" solution - if you aren't limiting the recursion, then you will - eventually - exhaust that as well.
Pointers are unlikely to help: a pointer is the same size as a reference, so that won't improve matters.
35 times in production sounds unlikely - unless two things are happening together:
1) You are passing value types as parameters
2) You are running as a web based app, where the stack space is significantly smaller than a desktop app would be (it defaults to 1MB, which is only 128K references / return addresses but that can be changed:
Advanced configuration | Microsoft Docs[
^])
I'd suspect from what you say you have done that it's data related: I'd be adding logging to find out exactly what happens with the "real data" that doesn't with the "dummy data" - does it contain a "data loop" that you weren't aware of?