Re: semi-random crashes on some macppc hardware
Frank Wille <[email protected]> Sat, 14 May 2016 15:28:46 +0200
| Newsgroups | gmane.os.netbsd.ports.powerpc |
|---|---|
| Organization | Privates Internet Ostwestfalen/Lippe e.V. |
| Message-ID | <[email protected]> |
Michael wrote: > I've seen semi-random crashes ( often, but nowhere near always things > like sshd or makemandb would segfault during boot ) [...] > To me that looks like insufficient instruction cache syncing when > writing the PLT entries in ld.elf_so, in order to test this I sprinkled > __syncicache() calls in a few suspicious-looking places in ppc_reloc.c. > I haven't seen any PLT-related crashes since. Thanks for that! I also saw some stability problems since 7.0 on my sandpoint servers (probably locking problems), but nothing like this so far. > The diff is attached, I'm sure it does more __syncicache()ing than > needed but so far I didn't have time to investigate further. I don't think that the __syncicache() at line 344 would have any effect, as all these entries will be invalidated at line 148 in _rtld_setup_pltgod() anyway. Also your __syncicache(w, 12) seems irrelevant. The only difference is that it might invalidate one unmodified word behind the entry, while the previous version invalidated one unmodified word before the entry. Probably the __syncicache() for line 399 (obj->gotptr != NULL) was the important one, although I doubt if this is actually executed as code. Otherwise there is also a __syncicache() for PPC64 missing at line 389? -- Frank Wille