I don't have the OpenBSD strchr.c source code online here so I'll stop speculating here...
[Martin v. Loewis]
I can't see anything wrong in it, and it hasn't significantly changed in ages, either.
Looks fine to me too -- and it's a very simple function. Google didn't turn up any suggestion of strchr problems under OpenBSD either.
Hate to say it, but the pointer passed *to* strchr must be insane, and that makes it more likely a Python, or platform compiler, bug.
I'd be curious what p_name points to when the process crashes.
(gdb) p *p_name