public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/63481] New: "Improve prepare_shrink_wrap to sink more instructions" causes linux kernel failure
@ 2014-10-08  4:34 sasha.levin at oracle dot com
  2014-10-08  4:42 ` [Bug c/63481] " pinskia at gcc dot gnu.org
  0 siblings, 1 reply; 2+ messages in thread
From: sasha.levin at oracle dot com @ 2014-10-08  4:34 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63481

            Bug ID: 63481
           Summary: "Improve prepare_shrink_wrap to sink more
                    instructions" causes linux kernel failure
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: sasha.levin at oracle dot com

Created attachment 33663
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33663&action=edit
good/bad kernel disasm

I've updated gcc (since two weeks ago) and now my kernel fails to boot with:

[   38.896180] kernel BUG at block/blk-flush.c:212!
[   38.897035] invalid opcode: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC KASAN
[   38.898179] Dumping ftrace buffer:
[   38.898666]    (ftrace buffer empty)
[   38.899186] Modules linked in:
[   38.899562] CPU: 6 PID: 0 Comm: swapper/6 Not tainted
3.17.0-rc7-next-20141003-sasha-00051-g8905629 #1329
[   38.900882] task: ffff8800366f0000 ti: ffff8800366e4000 task.ti:
ffff8800366e4000
[   38.901745] RIP: blk_flush_complete_seq (block/blk-flush.c:212)
[   38.903026] RSP: 0000:ffff8801c3a03e08  EFLAGS: 00010002
[   38.903717] RAX: 0000000000000008 RBX: ffff880033530000 RCX:
0000000000000003
[   38.904619] RDX: dfffe90000000000 RSI: ffff8800334f4000 RDI:
ffff8800335300a0
[   38.905102] RBP: ffff8801c3a03e58 R08: 0000000000000000 R09:
0000000000000000
[   38.905102] R10: 1ffff100b1888030 R11: 0000000000000000 R12:
ffff8800334f4000
[   38.905102] R13: 0000000000000000 R14: ffff8800335300a0 R15:
0000000000000000
[   38.905102] FS:  0000000000000000(0000) GS:ffff8801c3a00000(0000)
knlGS:0000000000000000
[   38.905102] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[   38.905102] CR2: ffffffffa022d0c0 CR3: 0000000021a22000 CR4:
00000000000006a0
[   38.905102] Stack:
[   38.905102]  ffff8800366e4000 ffff880033530030 ffff8802e3bd1f70
ffffffff00000007
[   38.905102]  ffffffff9bfc6c23 ffff8800335300a8 ffff8800334f4000
0000000000000000
[   38.905102]  ffff8800334f3f78 ffff8800334f4020 ffff8801c3a03ec8
ffffffff9bfc6d4d
[   38.905102] Call Trace:
[   38.905102]  <IRQ> 
[   38.905102] ? flush_end_io (block/blk-flush.c:230)
[   38.905102] flush_end_io (block/blk-flush.c:243 (discriminator 2))
[   38.905102] blk_mq_end_request (block/blk-mq.c:303)
[   38.905102] virtblk_request_done (drivers/block/virtio_blk.c:139)
[   38.905102] __blk_mq_complete_request_remote (block/blk-mq.c:311)
[   38.905102] ? blkdev_issue_zeroout (block/blk-mq.c:307)
[   38.905102] flush_smp_call_function_queue (kernel/smp.c:129 (discriminator
3) kernel/smp.c:254 (discriminator 3))
[   38.905102] ? preempt_count_add (kernel/sched/core.c:2631)
[   38.905102] generic_smp_call_function_single_interrupt (kernel/smp.c:208)
[   38.905102] smp_call_function_single_interrupt (arch/x86/kernel/smp.c:317
arch/x86/kernel/smp.c:323)
[   38.905102] call_function_single_interrupt (arch/x86/kernel/entry_64.S:1020)
[   38.905102]  <EOI> 
[   38.905102] ? native_safe_halt (./arch/x86/include/asm/irqflags.h:50)
[   38.905102] ? trace_hardirqs_on (kernel/locking/lockdep.c:2609)
[   38.905102] default_idle (./arch/x86/include/asm/paravirt.h:111
arch/x86/kernel/process.c:313)
[   38.905102] arch_cpu_idle (arch/x86/kernel/process.c:305)
[   38.905102] cpu_idle_loop (kernel/sched/idle.c:120 kernel/sched/idle.c:226)
[   38.905102] cpu_startup_entry (??:?)
[   38.905102] start_secondary (arch/x86/kernel/smpboot.c:240)
[ 38.905102] Code: 00 0f 84 ec 00 00 00 31 f6 48 89 df e8 aa 90 00 00 4c 89 e7
e8 92 91 00 00 44 89 e8 48 83 c4 28 5b 41 5c 41 5d 41 5e 41 5f 5d c3 <0f> 0b 66
0f 1f 44 00 00 4c 8d ab a8 00 00 00 4d 8d 7c 24 30 4c 
All code
========
   0:    00 0f                    add    %cl,(%rdi)
   2:    84 ec                    test   %ch,%ah
   4:    00 00                    add    %al,(%rax)
   6:    00 31                    add    %dh,(%rcx)
   8:    f6                       (bad)  
   9:    48 89 df                 mov    %rbx,%rdi
   c:    e8 aa 90 00 00           callq  0x90bb
  11:    4c 89 e7                 mov    %r12,%rdi
  14:    e8 92 91 00 00           callq  0x91ab
  19:    44 89 e8                 mov    %r13d,%eax
  1c:    48 83 c4 28              add    $0x28,%rsp
  20:    5b                       pop    %rbx
  21:    41 5c                    pop    %r12
  23:    41 5d                    pop    %r13
  25:    41 5e                    pop    %r14
  27:    41 5f                    pop    %r15
  29:    5d                       pop    %rbp
  2a:    c3                       retq   
  2b:*    0f 0b                    ud2            <-- trapping instruction
  2d:    66 0f 1f 44 00 00        nopw   0x0(%rax,%rax,1)
  33:    4c 8d ab a8 00 00 00     lea    0xa8(%rbx),%r13
  3a:    4d 8d 7c 24 30           lea    0x30(%r12),%r15
  3f:    4c                       rex.WR
    ...

Code starting with the faulting instruction
===========================================
   0:    0f 0b                    ud2    
   2:    66 0f 1f 44 00 00        nopw   0x0(%rax,%rax,1)
   8:    4c 8d ab a8 00 00 00     lea    0xa8(%rbx),%r13
   f:    4d 8d 7c 24 30           lea    0x30(%r12),%r15
  14:    4c                       rex.WR
    ...
[   38.905102] RIP blk_flush_complete_seq (block/blk-flush.c:212)
[   38.905102]  RSP <ffff8801c3a03e08>

I've noticed that reverting to the older gcc version made it work fine again,
so I've started a quick bisection which pointed at: "Improve
prepare_shrink_wrap to sink more instructions" (
https://gcc.gnu.org/ml/gcc-patches/2014-09/msg00358.html ).

I'm attaching good and bad .s files of the kernel's block/blk-mq.s,
block/blk-flush.s and drivers/block/virtio_blk.s.


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Bug c/63481] "Improve prepare_shrink_wrap to sink more instructions" causes linux kernel failure
  2014-10-08  4:34 [Bug c/63481] New: "Improve prepare_shrink_wrap to sink more instructions" causes linux kernel failure sasha.levin at oracle dot com
@ 2014-10-08  4:42 ` pinskia at gcc dot gnu.org
  0 siblings, 0 replies; 2+ messages in thread
From: pinskia at gcc dot gnu.org @ 2014-10-08  4:42 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63481

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |DUPLICATE

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Dup of bug 63404

*** This bug has been marked as a duplicate of bug 63404 ***


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-10-08  4:42 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-10-08  4:34 [Bug c/63481] New: "Improve prepare_shrink_wrap to sink more instructions" causes linux kernel failure sasha.levin at oracle dot com
2014-10-08  4:42 ` [Bug c/63481] " pinskia at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).