Brenda J. Butler
2011-Nov-26 02:03 UTC
[Pkg-xen-devel] Bug#646987: /usr/bin/xinit: xinit fails with xkbcomp could not be invoked
The function that returns ENOMEM is actually copy_mm. It returns ENOMEM when dup_mm returns 0. copy_mm receives clone_flags and task_struct * tsk. I think tsk is pointing to the new task (the process being forked). copy_mm assigns some values into *tsk, then: tsk->mm = NULL; tsk->active_mm = NULL; then we check if current process has ->mm; if not, return 0 (effectively copying the "no mm" status into the new task_struct, is this true?). Presumably 0 return is "success", because failure returns are things like -ENOMEM. If we haven't returned, then we check if clone_flags includes CLONE_VM; if so, we set our mm = the current process' ->mm, set some elements in ->mm and ->tsk and return. If clone_flags does not include CLONE_VM, we try to set mm = dup_mm(tsk) which presumably means we are trying to duplicate the ->mm of the task being created?!? and if that fails (0 return) then we return with -ENOMEM. So presumably the X server is trying to fork xkbcomp and is coming to this bit of code - current->mm is not 0, but clone_flags & CLONE_VM is false. And I imagine that tsk->mm is still 0 (as we are trying to create it in copy_mm, is that true?) so copy_mm fails. I need to know more about clone_flags and who sets it. bjb
Brenda J. Butler
2011-Nov-26 02:22 UTC
[Pkg-xen-devel] Bug#646987: /usr/bin/xinit: xinit fails with xkbcomp could not be invoked
On Fri, Nov 25, 2011 at 09:03:03PM -0500, Brenda J. Butler wrote:> If clone_flags does not include CLONE_VM, we try to set > > mm = dup_mm(tsk) > > which presumably means we are trying to duplicate the > ->mm of the task being created?!? and if that fails (0 return) > then we return with -ENOMEM.No, dup_mm tries to copy memory of the current task into the new task. But we see this message in kern.log: Xorg:2967 map pfn expected mapping type write-back for d0000000-e0000000, got write-combining This comes from reserve_pfn_range in arch/x86/mm/pat.c. In another note: I was able to do a kernel compilation with the kernel under xen that couldn't run the X server due to this forking problem. bjb
Ian Campbell
2011-Nov-26 10:55 UTC
[Pkg-xen-devel] Bug#646987: Bug#646987: /usr/bin/xinit: xinit fails with xkbcomp could not be invoked
On Fri, 2011-11-25 at 21:22 -0500, Brenda J. Butler wrote:> > But we see this message in kern.log: > Xorg:2967 map pfn expected mapping type write-back for > d0000000-e0000000, got write-combining > > This comes from reserve_pfn_range in arch/x86/mm/pat.c.Does "nopat" on your kernel command line work as a workaround? Ian. -- Ian Campbell Anger kills as surely as the other vices.
Apparently Analagous Threads
- [RFC/PATCH 01/15] preparation: provide hook to enable pgstes in user pagetable
- [PATCH v11 8/8] vhost: use vhost_tasks for worker threads
- [ 3009.778974] mcelog:16842 map pfn expected mapping type write-back for [mem 0x0009f000-0x000a0fff], got uncached-minus
- [ANNOUNCE] xkbcomp 1.4.1
- [ANNOUNCE] xkbcomp 1.4.0