[BusyBox 0000732]: incorrect use of vfork leads to corruption/crash

bugs at busybox.net bugs at busybox.net
Sun Feb 19 07:47:39 UTC 2006


A NOTE has been added to this issue. 
====================================================================== 
http://busybox.net/bugs/view.php?id=732 
====================================================================== 
Reported By:                rfelker
Assigned To:                BusyBox
====================================================================== 
Project:                    BusyBox
Issue ID:                   732
Category:                   Other
Reproducibility:            always
Severity:                   crash
Priority:                   normal
Status:                     assigned
====================================================================== 
Date Submitted:             02-18-2006 21:02 PST
Last Modified:              02-18-2006 23:47 PST
====================================================================== 
Summary:                    incorrect use of vfork leads to corruption/crash
Description: 
vfork is used in place of fork several places in busybox. As far as I can
tell, they are all incorrect according to susv3
(http://www.opengroup.org/onlinepubs/009695399/functions/vfork.html) and I
have confirmed that the one in tar.c causes memory corruption/crash on
implementations that actually provide a true vfork rather than just
mapping vfork to fork.

Specifics of the incorrect usage: dup2 and close are called after vfork.
According to the spec, no function other than exec* or _exit may be called
by the child process after vfork.

====================================================================== 

---------------------------------------------------------------------- 
 rfelker - 02-18-06 22:21  
---------------------------------------------------------------------- 
As you can see, this bug is filed under busybox. :)
My bad for saying uClibc in the description. Everything else I said still
applies (to busybox). 

---------------------------------------------------------------------- 
 vapier - 02-18-06 22:34  
---------------------------------------------------------------------- 
most of the time, vfork is used instead of fork so that busybox will work
nicely on uClinux systems 

---------------------------------------------------------------------- 
 rfelker - 02-18-06 23:47  
---------------------------------------------------------------------- 
Ah, perhaps an option should be available then? Clearly BusyBox's use of
vfork is not legitimate according to POSIX.

Actually in the case of my crash, it turned out to be another issue
causing it; with that addressed, vfork does not cause corruption/crash.
However, in theory it could cause a crash, and it would probably be a good
idea to make the conformant behavior optional (even if just via
-Dvfork=fork or something..). 

Issue History 
Date Modified   Username       Field                    Change               
====================================================================== 
02-18-06 21:02  rfelker        New Issue                                    
02-18-06 21:02  rfelker        Status                   new => assigned     
02-18-06 21:02  rfelker        Assigned To               => BusyBox         
02-18-06 22:01  vapier         Note Added: 0001106                          
02-18-06 22:21  rfelker        Note Added: 0001107                          
02-18-06 22:34  vapier         Note Added: 0001108                          
02-18-06 22:34  vapier         Description Updated                          
02-18-06 22:34  vapier         Note Deleted: 0001106                        
02-18-06 23:47  rfelker        Note Added: 0001109                          
======================================================================




More information about the busybox-cvs mailing list