Bug 389116

Summary: vex amd64->IR: unhandled instruction bytes: 0xC5 0xFC 0xC2 0xC0 0xF 0xC4 0xC2 0x7D 0x18 0x49
Product: [Developer tools] valgrind Reporter: Oliver Stoeneberg <oliverst>
Component: vexAssignee: Julian Seward <jseward>
Status: REPORTED ---    
Severity: normal    
Priority: NOR    
Version First Reported In: 3.13.0   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Oliver Stoeneberg 2018-01-17 16:10:15 UTC
An application using SDL1 on ubuntu 16.04 fails with the following:

vex amd64->IR: unhandled instruction bytes: 0xC5 0xFC 0xC2 0xC0 0xF 0xC4 0xC2 0x7D 0x18 0x49
vex amd64->IR:   REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
vex amd64->IR:   VEX=1 VEX.L=1 VEX.nVVVV=0x0 ESC=0F
vex amd64->IR:   PFX.66=0 PFX.F2=0 PFX.F3=0
==38658== valgrind: Unrecognised instruction at address 0xa324512.
==38658==    at 0xA324512: ???
==38658==    by 0x1B35B177: ??? (in /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so)
==38658==    by 0x1B35B4E8: ??? (in /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so)
==38658==    by 0x1B35BBC3: ??? (in /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so)
==38658==    by 0x1B35B9E6: ??? (in /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so)
==38658==    by 0xCC7A6B9: start_thread (pthread_create.c:333)
==38658==    by 0xF98241C: clone (clone.S:109)

Unfortunately there is no matching *-dbg or *-dbgsym package I can install so there's no info on what line causes this.
Comment 1 Oliver Stoeneberg 2018-01-17 23:27:42 UTC
The matching *-dbgsym package just showed up and there's a useful stack trace now

==45626== valgrind: Unrecognised instruction at address 0xa324512.
==45626==    at 0xA324512: ???
==45626==    by 0x1B35B177: lp_rast_shade_tile (lp_rast.c:352)
==45626==    by 0x1B35B4E8: do_rasterize_bin (lp_rast.c:609)
==45626==    by 0x1B35B4E8: rasterize_bin (lp_rast.c:628)
==45626==    by 0x1B35B4E8: rasterize_scene (lp_rast.c:688)
==45626==    by 0x1B35BBC3: thread_function (lp_rast.c:829)
==45626==    by 0x1B35B9E6: impl_thrd_routine (threads_posix.h:87)
==45626==    by 0xCC7A6B9: start_thread (pthread_create.c:333)
==45626==    by 0xF98241C: clone (clone.S:109)

Unfortunately that is not that helpful since the code at that line is a call to the JIT

         variant->jit_function[RAST_WHOLE]( &state->jit_context,
                                            tile_x + x, tile_y + y,
                                            inputs->frontfacing,
                                            GET_A0(inputs),
                                            GET_DADX(inputs),
                                            GET_DADY(inputs),
                                            color,
                                            depth,
                                            0xffff,
                                            &task->thread_data,
                                            stride,
                                            depth_stride);