Thanks, Erich. That does help for sure. But now I just have to figure out how the fault handlers work. It does look like all of them point to the same handler (_int_kernel_isr), so now I'm just wading through code to see how I'm supposed to trap the error. I'll try making my own functions and see if any of them get called -- at the moment, it appears that there isn't a fault that's causing my code to stop executing. I'll post my findings.
EDIT - I was expecting the fault handlers to call _int_default_isr...

I guess this implies that I need to read up on these macros -- elsewhere in the code it looks like _int_default_isr is intended for unhandled exceptions. So I put a breakpoint there and it does hit it. So this means my application did stop due to an unhandled exception, so now I just have to figure out which one.
EDIT - BlackNight looking at startup_MK64F12.S, I see the list of vector numbers. Being mostly assembly-illiterate, I took this info:

and working backwards up the list, it looks like NMI_Handler would then be 0. When I hit the breakpoint in _int_default_isr, it looked like the unhandled exception had a vector number of 3, which is BusFault_Handler. Reading dereksnell's post Tracking down Hard Faults , it sounds like it's likely an invalid memory address that's causing my problem, which sounds right since merely calling netconn_accept() (modified to simply return 0) causes the crash to occur. He said it could also be accessing a peripheral register before the clock is enabled, but I don't think this is the case since I can ping the device up until the point where I call netconn_accept.
Can you recommend any other debugging strategies? In the meantime, I will try to decipher your post Debugging Hard Faults on ARM Cortex-M | MCU on Eclipse to see if I can determine what causes the memory corruption.
Thank you!