Subject: Re: Latest compat_linux changes in current- break OpenOffice
To: Vincent <10.50@free.fr>
From: Jaromir Dolecek <jdolecek@NetBSD.org>
List: current-users
Date: 11/11/2005 20:07:04
On Fri, Nov 11, 2005 at 04:55:03PM +0100, Vincent wrote:
> Hi!
> 
> it seems that the latest sys/compat/linux modifications have "broken" 
> OpenOffice 2.0. It exits before actual launch with a "Killed" status. 

This might be related to revision 1.24 of sys/compat/linux/common/linux_sched.c

I'm not really sure the current code is correct.  The code should
only kill threads in the same thread group (i.e. ones cloned via
clone(...CLONE_THREAD).  The current code will kill more that that,
the setting of group_pid is somewhat suspicious.

Can you test if going back to revision 1.23 would fix that? If that would
fix it, revision 1.24 should be backed off.

Jaromir

> Here is a kdump:
> 
>  11074 bash     NAMI  "/usr/libexec/ld.elf_so"
>    684 soffice.bin GIO   fd 23 read 82 bytes
>        "lp:
>                 queuing is enabled
>                 printing is enabled
>                 1 entry in spool area
>                 printer idle
>        "
>    684 soffice.bin RET   read 82/0x52
>    684 soffice.bin CALL  read(0x17,0xb9000000,0x4000)
>  17736 bash     RET   waitpid 11074/0x2b42
>  17736 bash     CALL  rt_sigprocmask(2,0xbfbfdda0,0,8)
>  17736 bash     RET   rt_sigprocmask 0
>  17736 bash     CALL  rt_sigaction(SIGINT,0xbfbfdb80,0xbfbfdaf0,8)
>  17736 bash     RET   rt_sigaction 0
>  17736 bash     CALL  exit_group(0)
>    684 soffice.bin GIO   fd 23 read 0 bytes
>        ""
>    684 soffice.bin RET   read 0
>    684 soffice.bin CALL  close(0x17)
>    684 soffice.bin RET   close 0
>    684 soffice.bin CALL  waitpid(0x4548,0xb79ff4f0,0)
>    684 soffice.bin RET   waitpid 17736/0x4548
>    684 soffice.bin CALL  munmap(0xb9000000,0x4000)
>    684 soffice.bin RET   munmap 0
>    684 soffice.bin CALL  exit_group(0)
>   8829 soffice.bin RET   poll -1 errno -4 Interrupted system call
>   8829 soffice.bin PSIG  SIGKILL SIG_DFL
>  15047 soffice.bin RET   socketcall -1 errno -3 No such process
>  15047 soffice.bin PSIG  SIGKILL SIG_DFL
>   5413 soffice.bin RET   poll -1 errno -4 Interrupted system call
>   5413 soffice.bin PSIG  SIGKILL SIG_DFL
>  18118 soffice.bin RET   nanosleep -1 errno -4 Interrupted system call
>  18118 soffice.bin PSIG  SIGKILL SIG_DFL
>   1323 soffice.bin PSIG  SIGKILL SIG_DFL
>    307 sh       RET   wait4 1323/0x52b
>    307 sh       CALL  write(2,0x8072a80,0xc)
>    307 sh       GIO   fd 2 wrote 12 bytes
>        "[1]   Killed"
>    307 sh       RET   write 12/0xc
>    307 sh       CALL  write(2,0x8072a80,0x25)
>    307 sh       GIO   fd 2 wrote 37 bytes
>        "                  \"${sd_prog}/${sd..."
>    307 sh       RET   write 37/0x25
>    307 sh       CALL  write(2,0x8072a80,1)
>    307 sh       GIO   fd 2 wrote 1 bytes
>        "
>        "
>    307 sh       RET   write 1
>    307 sh       CALL  exit(0)
> 
> Executing the same code on 3.99.9 works.
> Any clue ?
> 
> Vincent

-- 
Jaromir Dolecek <jdolecek@NetBSD.org>            http://www.NetBSD.cz/
-=- We can walk our road together if our goals are all the same;     -=-
-=- We can run alone and free if we pursue a different aim.          -=-