upgrade 6-STABLE to -CURRENT on sparc64 renders box unusable

Michiel Boland michiel at boland.org
Tue Jul 10 20:41:09 UTC 2007


Well, in fact I did manage to debug this further. :)

The problem is that on sparc64 and -CURRENT, every executable segfaults in

  _rtld
   init_rtld
    relocate_objects
     reloc_non_plt
      mmap
       __getosreldate

It appears that __getosreldate was added five days ago, which may explain 
why the breakage on sparc64 hasn't been reported yet. (I am ccing peter@ 
since he committed this.)

If I apply the following patch, then rebuild libc, things are more or less 
ok again. Of course this patch is very suboptimal, I am just trying to 
point out where the problem is.

--- __getosreldate.c.orig	2007-07-10 22:29:02.000000000 +0200
+++ __getosreldate.c	2007-07-10 22:28:20.000000000 +0200
@@ -42,13 +42,10 @@
  int
  __getosreldate(void)
  {
-	static int osreldate;
+	int osreldate;
  	size_t len;
  	int oid[2];
  	int error, osrel;
-
-	if (osreldate != 0)
-		return (osreldate);

  	oid[0] = CTL_KERN;
  	oid[1] = KERN_OSRELDATE;



More information about the freebsd-current mailing list