On Sat, 1 Oct 2016, Kartik Agaram wrote:
> >Synopsis: The build process of release(8) fails when I make a change

I think this problem is specific to a bug in the change that was 
described.


> Modify /usr/src/bin/ls/ls.c with something non-trivial. I add these 
> lines after the local variable declarations inside ls_main():
> 
>   FILE* f = NULL;
>   f = fopen("/tmp/x", "w");
>   fclose(f);

Unfortunately, that change makes ls *and* other programs potentially 
crash.  I'm not going to say why right now because *actually doing that 
that debugging* (and not just thinking about) would be a good exercise.

I say "other programs" as ls_main() is pulled into both 'find' and 'ftpd'.  
Both 'ls' and 'find' are used in the build, so breaking them like this may 
easily result in making the build fail.


> At this point undoing the change also fails. Interposing `make clean` 
> also fails. Running `rm -rf /usr/src && rm -rf /usr/obj/*` and trying to 
> start from scratch with the cvs command above -- fails with the exact 
> same error message above. I've found no better alternative than to 
> delete the virtual server and spin up a new one :/

Yes: if you hose your system sufficiently, you may need to reinstall.  
I've lost count of how many times I've had to do that...in a single day!  

In this case, I would expect simply reinstalling base##.tgz would have 
brought the system back to a workable state.


> That failed as well, but I surmised that perhaps the output of `ls` was 
> being used in the build process somewhere.

Correct: the openbsd build depends on *many* utilities in the base system.  
A grep -w for 'ls' in the Makefiles find dozens of hits, including in 
gcc3, texinfo, llvm, and many sys/arch/*/stand/ subdirectories.


> I can't think of why a random write to /tmp would trip anything up. If 
> it's forbidden by pledge() the error should be something related to the 
> write, right?)

See explanation above.  :-)


> Is the process for building a release what everyone uses for hacking on 
> OpenBSD?

Yes.


The challenge for you is how you would diagnose the problem yourself.  
The compiler is reporting an error: did you examine the input files for 
correctness?  Compare the system includes to those from the install tgz 
files?  Figuring out and understanding *exactly* how the bug you created 
would cause that failure would be a good


Philip Guenther

Reply via email to