Whatever the reason, sometimes good code goes bad. You can fix the bug. Or if not, you can post a bug report that goes directly to the people who can fix the bug. When a protection fault occurs, Linux dumps out a dump of the processor state, including all the registers and the last several entries of the system stack. The latter is critical for finding the source of the problem.
Trouble is, the raw dump consists entirely of memory addresses.
Since Linux is an open-source system and since many installations have been custom compiled, the likelihood that these addresses will help anyone at a support desk to figure out the problem is small indeed. This maps code and symbols to physical addresses. These could be at any address, depending on which are loaded at a given moment and in what order. At program start, or in response to a signal, klogd will query the kernel for a list of modules and their load addresses. Kernel modules may register individual function or identifier addresses with the kernel when they are loaded.