[Crash-utility] [crash patch] Compute init_thread_union size

Mike Galbraith efault at gmx.de
Thu Apr 5 14:47:28 UTC 2018


On Thu, 2018-04-05 at 10:01 -0400, Dave Anderson wrote:
> 
> ----- Original Message -----
> > On Thu, 2018-04-05 at 09:27 -0400, Dave Anderson wrote:
> > > 
> > > ----- Original Message -----
> > > > Greetings,
> > > > 
> > > > I know absolutely nothing about how crash maintenance is done, and very
> > > > damn little about crash's gizzard, so please consider the below a bug
> > > > report, a patch.. or bloody annoying spam, as you see fit.
> > > 
> > > Hi Mike,
> > > 
> > > No, it's most definitely appreciated.  Normally patches are posted on the
> > > crash utility mailing list (crash-utility at redhat.com), but this is fine.
> > > 
> > > And speaking of the mailing list, there was a bug report and subsequent
> > > thread yesterday concerning this issue:
> > > 
> > >   https://www.redhat.com/archives/crash-utility/2018-April/msg00000.html
> > > 
> > > It was unresolved because the thread_union still exists in the most
> > > recent upstream sources, and I can still see the union declaration
> > > in the most recent Fedora kernel.
> > 
> > It still exists, but...
> > 
> > homer:..kernel/linux-4.15 # objdump -t vmlinux|grep thread_union
> > ffffffff81e00000 g     O .data  0000000000004000 init_thread_union
> >                                             ^^^^
> > homer:..kernel/linux-master # objdump -t vmlinux|grep thread_union
> > ffffffff81e00000 g       .data  0000000000000000 init_thread_union
> >                                             ^^^^
> > 
> > ...it's size went missing at the referenced commit.
> 
> Right, but the crash utility never dealt with the "init_thread_union"
> data symbol, but rather uses the declaration of the "thread_union"
> union, which still exists in today's linux-git:
> 
>   union thread_union {
>   #ifndef CONFIG_ARCH_TASK_STRUCT_ON_STACK
>           struct task_struct task;
>   #endif
>   #ifndef CONFIG_THREAD_INFO_IN_TASK
>           struct thread_info thread_info;
>   #endif
>           unsigned long stack[THREAD_SIZE/sizeof(long)];
>   };
> 
> So I'm guessing that the x86_64 arch never references the thread_union
> from include/linux/sched.h, and therefore has no need to put it in the
> vmlinux debuginfo data?

I don't recall all of the troubleshooting details, guess I should have
written the changelog at the same time I twiddled the code.  I expected
patchlet to be a throw away, so it didn't get a changelog until this
morning when I happened to notice that virgin source was still broken.

	-Mike




More information about the Crash-utility mailing list