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

Dave Anderson anderson at redhat.com
Thu Apr 5 15:10:54 UTC 2018



----- Original Message -----
> 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
 
Not a problem -- and your digging in and fixing this is much appreciated.
Queued for crash-7.2.2:

  https://github.com/crash-utility/crash/commit/6088a29f7e4ad7160e757679827db63ea41553df

Thanks,
  Dave







More information about the Crash-utility mailing list