Check for environment variable differences when the app is run remotely. You could be loading the wrong shared object because of a different environment, for example. You might also be running into resource limits on the remote invocation, such as max memory usage.
Can you get a stack trace from a core file? If so, what is the app trying to do when it SEGVs? If you can get a stack trace, can you get a memory map? Where is the code being executed from? What shared library or executable?
Intermittent SEGVs can be tremendously hard to track down. Heap corruption from buffer overflows - the most common cause of intermittent SEGVs - tends to appear almost random at times because of the way heap memory tends to work. (Because of hardware alignment requirements, heap memory from "malloc()/calloc()/etc" and/or "new" tends to be parceled out in 8-byte blocks. So if you malloc() a 25-byte buffer, on most of today's hardware you really get 32 bytes...)
Are you responsible for developing this application? If so, have you ever tried something like
Purify? Go look at the cost of that tool, then calculate how much time you've already spent trying to run down this ONE problem...