Mailing List Archive

pidgin & nvidia-drivers-355.11
Hi!

I've just updated from nvidia-drivers-352.30 to 355.11, and after reboot
pidgin failed to start:

pidgin: error while loading shared libraries:
/usr/lib64/libGLdispatch.so.0: cannot make segment writable for
relocation: Permission denied

and kernel log is:

kern.alert: grsec: denied RWX mprotect of
/usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0 by /usr/bin/pidgin

I've temporary switched to `eselect opengl set xorg-x11` and was able to
start pidgin, but I wonder is there other way to work around this issue?
Problem is, I don't like to use `paxctl-ng -m /usr/bin/pidgin` because
pidgin is one of "these" apps - it process a lot of data from network, it
support a lot of protocols, does a lot of complex parsing…

And main question is: why the hell pidgin needs OpenGL? I don't have any
"visual" plugins for pidgin enabled, so at a glance it shouldn't use OpenGL.
And it was able to work without is before I've updated nvidia-drivers, so
maybe something is wrong with this nvidia-drivers version.
How to find out why pidgin needs this library at all?


P.S. I know using hardened on workstation with nvidia-drivers isn't
supported, that's why I'm asking here instead of opening bug report.

--
WBR, Alex.
Re: pidgin & nvidia-drivers-355.11 [ In reply to ]
Hi!

On Sat, Sep 19, 2015 at 02:06:45AM +0300, Alex Efros wrote:
> And it was able to work without is before I've updated nvidia-drivers, so
> maybe something is wrong with this nvidia-drivers version.

This issue also affect many other apps, for example:

$ xxkb
xxkb: error while loading shared libraries: /usr/lib64/libGLdispatch.so.0:
cannot make segment writable for relocation: Permission denied

$ parcellite -n
parcellite: error while loading shared libraries:
/usr/lib64/libGLdispatch.so.0: cannot make segment writable for
relocation: Permission denied

Downgrading to nvidia-drivers-352.41 solved this issue.

--
WBR, Alex.
Re: pidgin & nvidia-drivers-355.11 [ In reply to ]
On 19 Sep 2015 at 2:06, Alex Efros wrote:

> I've temporary switched to `eselect opengl set xorg-x11` and was able to
> start pidgin, but I wonder is there other way to work around this issue?
> Problem is, I don't like to use `paxctl-ng -m /usr/bin/pidgin` because
> pidgin is one of "these" apps - it process a lot of data from network, it
> support a lot of protocols, does a lot of complex parsing…

you'll have to find out first why nvidia's GL dispatch library has
text relocations as that's not even allowed by the amd64 ABI and i
don't see any here in fact, for reference:

3e3ef95fd0351495d400147b994b1978 /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0

so try "readelf -edW /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0"
and post its output.

next, there's PAX_ELFRELOCS for this special case but before you
enable that let's figure out where those textrels come from ("scanelf -tT"
can also help).

> And main question is: why the hell pidgin needs OpenGL? I don't have any
> "visual" plugins for pidgin enabled, so at a glance it shouldn't use OpenGL.
> And it was able to work without is before I've updated nvidia-drivers, so
> maybe something is wrong with this nvidia-drivers version.
> How to find out why pidgin needs this library at all?

it may not be a direct dependency, you can try both ldd (on pidgin and
its dependent libraries) and strace/gdb to see why/when it's loaded.
Re: pidgin & nvidia-drivers-355.11 [ In reply to ]
Hi!

On Sat, Sep 19, 2015 at 04:14:17PM +0200, PaX Team wrote:
> 3e3ef95fd0351495d400147b994b1978 /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0

This lib in 355.11 on my system have same MD5.
Looks like previous (352.41) nvidia-drivers doesn't have this lib.

> so try "readelf -edW /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0"
> and post its output.

ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: DYN (Shared object file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0x3b890
Start of program headers: 64 (bytes into file)
Start of section headers: 489264 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 4
Size of section headers: 64 (bytes)
Number of section headers: 20
Section header string table index: 19

Section Headers:
[Nr] Name Type Address Off Size ES Flg Lk Inf Al
[ 0] NULL 0000000000000000 000000 000000 00 0 0 0
[ 1] .hash HASH 0000000000000120 000120 002358 04 A 2 0 8
[ 2] .dynsym DYNSYM 0000000000002478 002478 007338 18 A 3 2 8
[ 3] .dynstr STRTAB 00000000000097b0 0097b0 005435 00 A 0 0 1
[ 4] .gnu.version VERSYM 000000000000ebe6 00ebe6 00099a 02 A 2 0 2
[ 5] .gnu.version_r VERNEED 000000000000f580 00f580 000040 00 A 3 2 8
[ 6] .rela.dyn RELA 000000000000f5c0 00f5c0 02bea8 18 A 2 0 8
[ 7] .rela.plt RELA 000000000003b468 03b468 000270 18 A 2 8 8
[ 8] .plt PROGBITS 000000000003b6e0 03b6e0 0001b0 10 AX 0 0 16
[ 9] .text PROGBITS 000000000003b890 03b890 00c4c5 00 AX 0 0 16
[10] wtext PROGBITS 0000000000048000 048000 012000 00 AX 0 0 4096
[11] .rodata PROGBITS 000000000005a000 05a000 01222b 00 A 0 0 32
[12] .eh_frame PROGBITS 000000000006c230 06c230 000bc8 00 A 0 0 8
[13] .data.rel.ro PROGBITS 000000000026d000 06d000 00a370 00 WA 0 0 32
[14] .dynamic DYNAMIC 0000000000277370 077370 0001b0 10 WA 3 0 8
[15] .got PROGBITS 0000000000277520 077520 000068 08 WA 0 0 8
[16] .got.plt PROGBITS 0000000000277588 077588 0000e8 08 WA 0 0 8
[17] .data PROGBITS 0000000000277670 077670 000020 00 WA 0 0 8
[18] .bss NOBITS 00000000002776a0 077690 0202d8 00 WA 0 0 32
[19] .shstrtab STRTAB 0000000000000000 077690 00009e 00 0 0 1
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings), l (large)
I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
O (extra OS processing required) o (OS specific), p (processor specific)

Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
LOAD 0x000000 0x0000000000000000 0x0000000000000000 0x06cdf8 0x06cdf8 R E 0x200000
LOAD 0x06d000 0x000000000026d000 0x000000000026d000 0x00a690 0x02a978 RW 0x200000
DYNAMIC 0x077370 0x0000000000277370 0x0000000000277370 0x0001b0 0x0001b0 RW 0x8
GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW 0x8

Section to Segment mapping:
Segment Sections...
00 .hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt .plt .text wtext .rodata .eh_frame
01 .data.rel.ro .dynamic .got .got.plt .data .bss
02 .dynamic
03

Dynamic section at offset 0x77370 contains 23 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x0000000000000001 (NEEDED) Shared library: [libdl.so.2]
0x000000000000000e (SONAME) Library soname: [libGLdispatch.so.0]
0x0000000000000010 (SYMBOLIC) 0x0
0x000000000000000c (INIT) 0x3c430
0x0000000000000004 (HASH) 0x120
0x0000000000000005 (STRTAB) 0x97b0
0x0000000000000006 (SYMTAB) 0x2478
0x000000000000000a (STRSZ) 21557 (bytes)
0x000000000000000b (SYMENT) 24 (bytes)
0x0000000000000003 (PLTGOT) 0x277588
0x0000000000000002 (PLTRELSZ) 624 (bytes)
0x0000000000000014 (PLTREL) RELA
0x0000000000000017 (JMPREL) 0x3b468
0x0000000000000007 (RELA) 0xf5c0
0x0000000000000008 (RELASZ) 179880 (bytes)
0x0000000000000009 (RELAENT) 24 (bytes)
0x0000000000000016 (TEXTREL) 0x0
0x000000006ffffffe (VERNEED) 0xf580
0x000000006fffffff (VERNEEDNUM) 2
0x000000006ffffff0 (VERSYM) 0xebe6
0x000000006ffffff9 (RELACOUNT) 7494
0x0000000000000000 (NULL) 0x0

> next, there's PAX_ELFRELOCS for this special case but before you
> enable that let's figure out where those textrels come from ("scanelf -tT"
> can also help).

# CONFIG_PAX_ELFRELOCS is not set

# scanelf -tT /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0
TYPE TEXTREL TEXTRELS FILE
scanelf: scanelf_file_textrels(): ELF /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0 has TEXTREL markings but doesnt appear to have any real TEXTREL's !?
ET_DYN TEXTREL /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0

# scanelf -tT /usr/bin/xxkb
TYPE TEXTREL TEXTRELS FILE
ET_DYN - /usr/bin/xxkb

$ xxkb
xxkb: error while loading shared libraries: /usr/lib64/libGLdispatch.so.0:
cannot make segment writable for relocation: Permission denied

> it may not be a direct dependency, you can try both ldd (on pidgin and
> its dependent libraries) and strace/gdb to see why/when it's loaded.

$ ldd /usr/bin/xxkb
linux-vdso.so.1 (0x000071f6799cd000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x000071f679459000)
libXt.so.6 => /usr/lib64/libXt.so.6 (0x000071f6791e9000)
libgdk_pixbuf_xlib-2.0.so.0 => /usr/lib64/libgdk_pixbuf_xlib-2.0.so.0 (0x000071f678fd6000)
librsvg-2.so.2 => /usr/lib64/librsvg-2.so.2 (0x000071f678d9b000)
libgobject-2.0.so.0 => /usr/lib64/libgobject-2.0.so.0 (0x000071f678b3d000)
libXext.so.6 => /usr/lib64/libXext.so.6 (0x000071f678929000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x000071f67870c000)
libc.so.6 => /lib64/libc.so.6 (0x000071f678361000)
libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x000071f678138000)
libdl.so.2 => /lib64/libdl.so.2 (0x000071f677f34000)
libSM.so.6 => /usr/lib64/libSM.so.6 (0x000071f677d2b000)
libICE.so.6 => /usr/lib64/libICE.so.6 (0x000071f677b0d000)
libgdk_pixbuf-2.0.so.0 => /usr/lib64/libgdk_pixbuf-2.0.so.0 (0x000071f6778e9000)
libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x000071f677596000)
libgio-2.0.so.0 => /usr/lib64/libgio-2.0.so.0 (0x000071f6771db000)
libpangocairo-1.0.so.0 => /usr/lib64/libpangocairo-1.0.so.0 (0x000071f676fcc000)
libpango-1.0.so.0 => /usr/lib64/libpango-1.0.so.0 (0x000071f676d77000)
libcairo.so.2 => /usr/lib64/libcairo.so.2 (0x000071f676a2b000)
libpng16.so.16 => /usr/lib64/libpng16.so.16 (0x000071f6767f0000)
libcroco-0.6.so.3 => /usr/lib64/libcroco-0.6.so.3 (0x000071f6765ad000)
libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x000071f67622a000)
libm.so.6 => /lib64/libm.so.6 (0x000071f675f2e000)
libffi.so.6 => /usr/lib64/libffi.so.6 (0x000071f675d25000)
/lib64/ld-linux-x86-64.so.2 (0x000071f6797ad000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x000071f675b21000)
libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x000071f67591a000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x000071f675715000)
libgmodule-2.0.so.0 => /usr/lib64/libgmodule-2.0.so.0 (0x000071f675511000)
libz.so.1 => /lib64/libz.so.1 (0x000071f6752f9000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x000071f6750e0000)
libpangoft2-1.0.so.0 => /usr/lib64/libpangoft2-1.0.so.0 (0x000071f674ec9000)
libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x000071f674c0f000)
libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x000071f6749cb000)
libpixman-1.so.0 => /usr/lib64/libpixman-1.so.0 (0x000071f674716000)
libEGL.so.1 => /usr/lib64/libEGL.so.1 (0x000071f674511000)
libxcb-shm.so.0 => /usr/lib64/libxcb-shm.so.0 (0x000071f67430d000)
libxcb-render.so.0 => /usr/lib64/libxcb-render.so.0 (0x000071f674101000)
libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x000071f673ef6000)
libGL.so.1 => /usr/lib64/libGL.so.1 (0x000071f673bc7000)
librt.so.1 => /lib64/librt.so.1 (0x000071f6739bf000)
libicui18n.so.55 => /usr/lib64/libicui18n.so.55 (0x000071f673514000)
libicuuc.so.55 => /usr/lib64/libicuuc.so.55 (0x000071f67315c000)
libicudata.so.55 => /usr/lib64/libicudata.so.55 (0x000071f6716a5000)
libharfbuzz.so.0 => /usr/lib64/libharfbuzz.so.0 (0x000071f671441000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x000071f671230000)
libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x000071f671002000)
libGLdispatch.so.0 => /usr/lib64/libGLdispatch.so.0 (0x000071f670d6a000)
libnvidia-tls.so.355.11 => /usr/lib64/libnvidia-tls.so.355.11 (0x000071f670b66000)
libnvidia-glcore.so.355.11 => /usr/lib64/libnvidia-glcore.so.355.11 (0x000071f66efa0000)
libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/libstdc++.so.6 (0x000071f66ec79000)
libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/libgcc_s.so.1 (0x000071f66ea63000)
libgraphite2.so.3 => /usr/lib64/libgraphite2.so.3 (0x000071f66e843000)

I don't know gdb good enough to do what you ask, but if you'll provide
required gdb commands I'll do it.

$ strace -ff /usr/bin/xxkb

execve("/usr/bin/xxkb", ["/usr/bin/xxkb"], [/* 73 vars */]) = 0
brk(0) = 0xe1dd41c13e0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c1a3000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=167635, ...}) = 0
mmap(NULL, 167635, PROT_READ, MAP_PRIVATE, 5, 0) = 0x6bf35c17a000
close(5) = 0
open("/usr/lib64/libX11.so.6", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\337\1\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=1390704, ...}) = 0
mmap(NULL, 3488000, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf35bc32000
mprotect(0x6bf35bd80000, 2093056, PROT_NONE) = 0
mmap(0x6bf35bf7f000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x14d000) = 0x6bf35bf7f000
close(5) = 0
open("/usr/lib64/libXt.so.6", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300<\1\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=454592, ...}) = 0
mmap(NULL, 2553216, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf35b9c2000
mprotect(0x6bf35ba2b000, 2097152, PROT_NONE) = 0
mmap(0x6bf35bc2b000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x69000) = 0x6bf35bc2b000
mmap(0x6bf35bc31000, 1408, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x6bf35bc31000
close(5) = 0
open("/usr/lib64/libgdk_pixbuf_xlib-2.0.so.0", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360!\0\0\0\0\0\0"..., 832) = 832
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c179000
fstat(5, {st_mode=S_IFREG|0755, st_size=75504, ...}) = 0
mmap(NULL, 2171104, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf35b7af000
mprotect(0x6bf35b7c0000, 2097152, PROT_NONE) = 0
mmap(0x6bf35b9c0000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x11000) = 0x6bf35b9c0000
close(5) = 0
open("/usr/lib64/librsvg-2.so.2", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240|\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=239528, ...}) = 0
mmap(NULL, 2335304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf35b574000
mprotect(0x6bf35b5ad000, 2097152, PROT_NONE) = 0
mmap(0x6bf35b7ad000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x39000) = 0x6bf35b7ad000
close(5) = 0
open("/usr/lib64/libgobject-2.0.so.0", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\263\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=382904, ...}) = 0
mmap(NULL, 2481128, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf35b316000
mprotect(0x6bf35b372000, 2093056, PROT_NONE) = 0
mmap(0x6bf35b571000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x5b000) = 0x6bf35b571000
close(5) = 0
open("/usr/lib64/libXext.so.6", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P9\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=80808, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c178000
mmap(NULL, 2176824, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf35b102000
mprotect(0x6bf35b115000, 2093056, PROT_NONE) = 0
mmap(0x6bf35b314000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x12000) = 0x6bf35b314000
close(5) = 0
open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300q\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=133122, ...}) = 0
mmap(NULL, 2212400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf35aee5000
mprotect(0x6bf35aefc000, 2097152, PROT_NONE) = 0
mmap(0x6bf35b0fc000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x17000) = 0x6bf35b0fc000
mmap(0x6bf35b0fe000, 12848, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x6bf35b0fe000
close(5) = 0
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000 \2\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=1738024, ...}) = 0
mmap(NULL, 3845784, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf35ab3a000
mprotect(0x6bf35acdb000, 2097152, PROT_NONE) = 0
mmap(0x6bf35aedb000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x1a1000) = 0x6bf35aedb000
mmap(0x6bf35aee1000, 16024, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x6bf35aee1000
close(5) = 0
open("/usr/lib64/libxcb.so.1", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \244\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=165648, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c177000
mmap(NULL, 2261256, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf35a911000
mprotect(0x6bf35a938000, 2097152, PROT_NONE) = 0
mmap(0x6bf35ab38000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x27000) = 0x6bf35ab38000
close(5) = 0
open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\17\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=14272, ...}) = 0
mmap(NULL, 2109584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf35a70d000
mprotect(0x6bf35a710000, 2093056, PROT_NONE) = 0
mmap(0x6bf35a90f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2000) = 0x6bf35a90f000
close(5) = 0
open("/usr/lib64/libSM.so.6", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\34\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=34456, ...}) = 0
mmap(NULL, 2129976, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf35a504000
mprotect(0x6bf35a50c000, 2093056, PROT_NONE) = 0
mmap(0x6bf35a70b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x7000) = 0x6bf35a70b000
close(5) = 0
open("/usr/lib64/libICE.so.6", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320Q\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=109216, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c176000
mmap(NULL, 2219200, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf35a2e6000
mprotect(0x6bf35a2ff000, 2097152, PROT_NONE) = 0
mmap(0x6bf35a4ff000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x19000) = 0x6bf35a4ff000
mmap(0x6bf35a501000, 11456, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x6bf35a501000
close(5) = 0
open("/usr/lib64/libgdk_pixbuf-2.0.so.0", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20`\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=145152, ...}) = 0
mmap(NULL, 2240912, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf35a0c2000
mprotect(0x6bf35a0e4000, 2097152, PROT_NONE) = 0
mmap(0x6bf35a2e4000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x22000) = 0x6bf35a2e4000
close(5) = 0
open("/usr/lib64/libglib-2.0.so.0", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\246\1\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=1387712, ...}) = 0
mmap(NULL, 3485616, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf359d6f000
mprotect(0x6bf359ec1000, 2093056, PROT_NONE) = 0
mmap(0x6bf35a0c0000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x151000) = 0x6bf35a0c0000
close(5) = 0
open("/usr/lib64/libgio-2.0.so.0", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360K\3\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=1805128, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c175000
mmap(NULL, 3908040, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf3599b4000
mprotect(0x6bf359b67000, 2093056, PROT_NONE) = 0
mmap(0x6bf359d66000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x1b2000) = 0x6bf359d66000
mmap(0x6bf359d6d000, 4552, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x6bf359d6d000
close(5) = 0
open("/usr/lib64/libpangocairo-1.0.so.0", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0PI\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=59152, ...}) = 0
mmap(NULL, 2154688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf3597a5000
mprotect(0x6bf3597b2000, 2097152, PROT_NONE) = 0
mmap(0x6bf3599b2000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0xd000) = 0x6bf3599b2000
close(5) = 0
open("/usr/lib64/libpango-1.0.so.0", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\325\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=345904, ...}) = 0
mmap(NULL, 2442112, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf359550000
mprotect(0x6bf3595a2000, 2093056, PROT_NONE) = 0
mmap(0x6bf3597a1000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x51000) = 0x6bf3597a1000
close(5) = 0
open("/usr/lib64/libcairo.so.2", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 B\1\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=1351600, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c174000
mmap(NULL, 3453424, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf359204000
mprotect(0x6bf359349000, 2097152, PROT_NONE) = 0
mmap(0x6bf359549000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x145000) = 0x6bf359549000
mmap(0x6bf35954e000, 4592, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x6bf35954e000
close(5) = 0
open("/usr/lib64/libpng16.so.16", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@^\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=239320, ...}) = 0
mmap(NULL, 2334736, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf358fc9000
mprotect(0x6bf359003000, 2093056, PROT_NONE) = 0
mmap(0x6bf359202000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x39000) = 0x6bf359202000
close(5) = 0
open("/usr/lib64/libcroco-0.6.so.3", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\254\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=272416, ...}) = 0
mmap(NULL, 2367704, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf358d86000
mprotect(0x6bf358dc5000, 2097152, PROT_NONE) = 0
mmap(0x6bf358fc5000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x3f000) = 0x6bf358fc5000
close(5) = 0
open("/usr/lib64/libxml2.so.2", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\346\2\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=1580064, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c173000
mmap(NULL, 3680696, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf358a03000
mprotect(0x6bf358b7b000, 2097152, PROT_NONE) = 0
mmap(0x6bf358d7b000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x178000) = 0x6bf358d7b000
mmap(0x6bf358d85000, 2488, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x6bf358d85000
close(5) = 0
open("/lib64/libm.so.6", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 U\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=1030096, ...}) = 0
mmap(NULL, 3125352, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf358707000
mprotect(0x6bf358802000, 2093056, PROT_NONE) = 0
mmap(0x6bf358a01000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0xfa000) = 0x6bf358a01000
close(5) = 0
open("/usr/lib64/libffi.so.6", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \31\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=34528, ...}) = 0
mmap(NULL, 2131144, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf3584fe000
mprotect(0x6bf358506000, 2093056, PROT_NONE) = 0
mmap(0x6bf358705000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x7000) = 0x6bf358705000
close(5) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c172000
open("/usr/lib64/libXau.so.6", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\16\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=13960, ...}) = 0
mmap(NULL, 2109480, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf3582fa000
mprotect(0x6bf3582fd000, 2093056, PROT_NONE) = 0
mmap(0x6bf3584fc000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2000) = 0x6bf3584fc000
close(5) = 0
open("/usr/lib64/libXdmcp.so.6", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\24\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=26248, ...}) = 0
mmap(NULL, 2121744, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf3580f3000
mprotect(0x6bf3580f8000, 2097152, PROT_NONE) = 0
mmap(0x6bf3582f8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x5000) = 0x6bf3582f8000
close(5) = 0
open("/lib64/libuuid.so.1", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\26\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=18352, ...}) = 0
mmap(NULL, 2113560, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf357eee000
mprotect(0x6bf357ef2000, 2093056, PROT_NONE) = 0
mmap(0x6bf3580f1000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x3000) = 0x6bf3580f1000
close(5) = 0
open("/usr/lib64/libgmodule-2.0.so.0", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\21\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=14016, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c171000
mmap(NULL, 2109560, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf357cea000
mprotect(0x6bf357ced000, 2093056, PROT_NONE) = 0
mmap(0x6bf357eec000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2000) = 0x6bf357eec000
close(5) = 0
open("/lib64/libz.so.1", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`#\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=96160, ...}) = 0
mmap(NULL, 2191496, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf357ad2000
mprotect(0x6bf357ae8000, 2097152, PROT_NONE) = 0
mmap(0x6bf357ce8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x16000) = 0x6bf357ce8000
close(5) = 0
open("/lib64/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300:\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=92328, ...}) = 0
mmap(NULL, 2197640, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf3578b9000
mprotect(0x6bf3578ce000, 2097152, PROT_NONE) = 0
mmap(0x6bf357ace000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x15000) = 0x6bf357ace000
mmap(0x6bf357ad0000, 6280, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x6bf357ad0000
close(5) = 0
open("/usr/lib64/libpangoft2-1.0.so.0", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@j\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=91864, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c170000
mmap(NULL, 2187664, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf3576a2000
mprotect(0x6bf3576b8000, 2093056, PROT_NONE) = 0
mmap(0x6bf3578b7000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x15000) = 0x6bf3578b7000
close(5) = 0
open("/usr/lib64/libfreetype.so.6", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\364\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=759512, ...}) = 0
mmap(NULL, 2854928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf3573e8000
mprotect(0x6bf35749c000, 2093056, PROT_NONE) = 0
mmap(0x6bf35769b000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0xb3000) = 0x6bf35769b000
close(5) = 0
open("/usr/lib64/libfontconfig.so.1", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 p\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=276192, ...}) = 0
mmap(NULL, 2372232, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf3571a4000
mprotect(0x6bf3571e6000, 2093056, PROT_NONE) = 0
mmap(0x6bf3573e5000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x41000) = 0x6bf3573e5000
close(5) = 0
open("/usr/lib64/libpixman-1.so.0", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\246\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=739216, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c16f000
mmap(NULL, 2834776, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf356eef000
mprotect(0x6bf356f9c000, 2093056, PROT_NONE) = 0
mmap(0x6bf35719b000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0xac000) = 0x6bf35719b000
close(5) = 0
open("/usr/lib64/libEGL.so.1", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\30\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=18464, ...}) = 0
mmap(NULL, 2114648, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf356cea000
mprotect(0x6bf356cee000, 2097152, PROT_NONE) = 0
mmap(0x6bf356eee000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x4000) = 0x6bf356eee000
close(5) = 0
open("/usr/lib64/libxcb-shm.so.0", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\16\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=14064, ...}) = 0
mmap(NULL, 2109480, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf356ae6000
mprotect(0x6bf356ae8000, 2097152, PROT_NONE) = 0
mmap(0x6bf356ce8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2000) = 0x6bf356ce8000
close(5) = 0
open("/usr/lib64/libxcb-render.so.0", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0208\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=46832, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c16e000
mmap(NULL, 2142248, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf3568da000
mprotect(0x6bf3568e4000, 2097152, PROT_NONE) = 0
mmap(0x6bf356ae4000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0xa000) = 0x6bf356ae4000
close(5) = 0
open("/usr/lib64/libXrender.so.1", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\34\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=42904, ...}) = 0
mmap(NULL, 2138440, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf3566cf000
mprotect(0x6bf3566d8000, 2097152, PROT_NONE) = 0
mmap(0x6bf3568d8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x9000) = 0x6bf3568d8000
close(5) = 0
open("/usr/lib64/libGL.so.1", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\n\5\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=1214216, ...}) = 0
mmap(NULL, 3336856, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf3563a0000
mprotect(0x6bf3564a2000, 2093056, PROT_NONE) = 0
mmap(0x6bf3566a1000, 163840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x101000) = 0x6bf3566a1000
mmap(0x6bf3566c9000, 23192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x6bf3566c9000
close(5) = 0
open("/lib64/librt.so.1", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220#\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=31032, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c16d000
mmap(NULL, 2128408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf356198000
mprotect(0x6bf35619f000, 2093056, PROT_NONE) = 0
mmap(0x6bf35639e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x6000) = 0x6bf35639e000
close(5) = 0
open("/usr/lib64/libicui18n.so.55", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@K\v\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=2795648, ...}) = 0
mmap(NULL, 4894384, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf355ced000
mprotect(0x6bf355f87000, 2097152, PROT_NONE) = 0
mmap(0x6bf356187000, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x29a000) = 0x6bf356187000
close(5) = 0
open("/usr/lib64/libicuuc.so.55", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260+\5\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=1783600, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c16c000
mmap(NULL, 3898144, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf355935000
mprotect(0x6bf355ad8000, 2093056, PROT_NONE) = 0
mmap(0x6bf355cd7000, 73728, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x1a2000) = 0x6bf355cd7000
mmap(0x6bf355ce9000, 15136, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x6bf355ce9000
close(5) = 0
open("/usr/lib64/libicudata.so.55", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\5\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=25912888, ...}) = 0
mmap(NULL, 28008464, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf353e7e000
mprotect(0x6bf355734000, 2093056, PROT_NONE) = 0
mmap(0x6bf355933000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x18b5000) = 0x6bf355933000
close(5) = 0
open("/usr/lib64/libharfbuzz.so.0", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0Pu\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=407504, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c16b000
mmap(NULL, 2504080, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf353c1a000
mprotect(0x6bf353c7b000, 2097152, PROT_NONE) = 0
mmap(0x6bf353e7b000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x61000) = 0x6bf353e7b000
close(5) = 0
open("/lib64/libbz2.so.1", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\27\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=70384, ...}) = 0
mmap(NULL, 2165800, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf353a09000
mprotect(0x6bf353a19000, 2093056, PROT_NONE) = 0
mmap(0x6bf353c18000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0xf000) = 0x6bf353c18000
close(5) = 0
open("/usr/lib64/libexpat.so.1", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000?\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=186072, ...}) = 0
mmap(NULL, 2281488, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf3537db000
mprotect(0x6bf353806000, 2093056, PROT_NONE) = 0
mmap(0x6bf353a05000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x2a000) = 0x6bf353a05000
close(5) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c16a000
open("/usr/lib64/libGLdispatch.so.0", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\270\3\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=490544, ...}) = 0
mmap(NULL, 2718072, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf353543000
mprotect(0x6bf3535b0000, 2097152, PROT_NONE) = 0
mmap(0x6bf3537b0000, 45056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x6d000) = 0x6bf3537b0000
mmap(0x6bf3537bb000, 129400, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x6bf3537bb000
close(5) = 0
open("/usr/lib64/libnvidia-tls.so.355.11", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\t\0\0\0\0\0\0"..., 832) = 832
lseek(5, 11152, SEEK_SET) = 11152
read(5, "\4\0\0\0\20\0\0\0\1\0\0\0GNU\0\0\0\0\0\2\0\0\0\3\0\0\0c\0\0\0", 32) = 32
fstat(5, {st_mode=S_IFREG|0755, st_size=14480, ...}) = 0
mmap(NULL, 2110752, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf35333f000
mprotect(0x6bf353342000, 2097152, PROT_NONE) = 0
mmap(0x6bf353542000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x3000) = 0x6bf353542000
close(5) = 0
open("/usr/lib64/libnvidia-glcore.so.355.11", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \262-\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=26945016, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c169000
mmap(NULL, 29119808, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf351779000
mprotect(0x6bf352d77000, 2097152, PROT_NONE) = 0
mmap(0x6bf352f77000, 3883008, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x15fe000) = 0x6bf352f77000
mmap(0x6bf35332b000, 79168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x6bf35332b000
close(5) = 0
open("/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\265\5\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=1125040, ...}) = 0
mmap(NULL, 3305280, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf351452000
mprotect(0x6bf35155c000, 2093056, PROT_NONE) = 0
mmap(0x6bf35175b000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x109000) = 0x6bf35175b000
mmap(0x6bf351765000, 81728, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x6bf351765000
close(5) = 0
open("/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300*\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0644, st_size=87776, ...}) = 0
mmap(NULL, 2183840, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf35123c000
mprotect(0x6bf351251000, 2093056, PROT_NONE) = 0
mmap(0x6bf351450000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x14000) = 0x6bf351450000
close(5) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c168000
open("/usr/lib64/libgraphite2.so.3", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 (\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=128840, ...}) = 0
mmap(NULL, 2224280, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x6bf35101c000
mprotect(0x6bf35103a000, 2093056, PROT_NONE) = 0
mmap(0x6bf351239000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x1d000) = 0x6bf351239000
close(5) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c167000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c166000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c165000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c164000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c162000
arch_prctl(ARCH_SET_FS, 0x6bf35c162940) = 0
mprotect(0x6bf35aedb000, 16384, PROT_READ) = 0
mprotect(0x6bf351239000, 8192, PROT_READ) = 0
mprotect(0x6bf351450000, 4096, PROT_READ) = 0
mprotect(0x6bf358a01000, 4096, PROT_READ) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6bf35c161000
mprotect(0x6bf35175b000, 36864, PROT_READ) = 0
mprotect(0x6bf35a90f000, 4096, PROT_READ) = 0
mprotect(0x6bf353543000, 446464, PROT_READ|PROT_WRITE) = -1 EACCES (Permission denied)
writev(2, [.{"/usr/bin/xxkb", 13}, {": ", 2}, {"error while loading shared libra"..., 36}, {": ", 2}, {"/usr/lib64/libGLdispatch.so.0", 29}, {": ", 2}, {"cannot make segment writable for"..., 43}, {": ", 2}, {"Permission denied", 17}, {"\n", 1}], 10/usr/bin/xxkb: error while loading shared libraries: /usr/lib64/libGLdispatch.so.0: cannot make segment writable for relocation: Permission denied
) = 147
exit_group(127) = ?
+++ exited with 127 +++

--
WBR, Alex.
Re: pidgin & nvidia-drivers-355.11 [ In reply to ]
On 19 Sep 2015 at 17:45, Alex Efros wrote:

> > so try "readelf -edW /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0"
> > and post its output.
>
> Section Headers:
> [Nr] Name Type Address Off Size ES Flg Lk Inf Al
> [10] wtext PROGBITS 0000000000048000 048000 012000 00 AX 0 0 4096

this is an interesting section as i guess it's meant to be writable
at runtime (probably stands for 'w'ritable 'text') even though it's
placed an r-x segment so probably there's an explicit mprotect call
later to make it writable (temporarily or permanently).

> Dynamic section at offset 0x77370 contains 23 entries:
> Tag Type Name/Value
> 0x0000000000000016 (TEXTREL) 0x0

this mark is normally emitted by the linker when the binary will
need runtime text relocations but as i said, there's no such thing
under the amd64 ABI. so this makes me think that barring some toolchain
bug on their end, it may be a trick to actually accomodate PaX users
as the already mentioned ELFRELOCS feature will allow text relocations
by allowing a one-time transition of r-x -> rw- -> r-x that ld.so
uses to perform text relocations. and it so happens that i restrict
this capability to files that are actually marked with DT_TEXTREL
(otherwise upon enabling this kernel option any program and thus
exploit could abuse this to circumvent MPROTECT).

so there're two things left to do:
1. enable ELFRELOCS in your kernel config (and keep MPROTECT enforced
on all binaries)
2. perhaps ask nvidia if this textrel marking is intentional

my guess is that this will get you an nvidia based system where you
actually no longer have to disable MPROTECT on all binaries that
use their GL library which would be a marked improvement, especially
if this wtext thing doesn't stay writable for all eternity and goes
back to r-x after some initial runtime codegen is done there (you
can check that in /proc/pid/maps).
Re: pidgin & nvidia-drivers-355.11 [ In reply to ]
Hi!

On Sat, Sep 19, 2015 at 05:50:20PM +0200, PaX Team wrote:
> so there're two things left to do:
> 1. enable ELFRELOCS in your kernel config (and keep MPROTECT enforced
> on all binaries)

Done. This works. I don't really like it, but let it be, at least for now.

At a glance only difference is few messages in kernel log:

grsec: denied text relocation in /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0, VMA:0x6cb6b1535000 0x00000000 by /usr/lib64/xfce4/notifyd/xfce4-notifyd[xfce4-notifyd:3003] uid/euid:1000/1000 gid/egid:1000/1000, parent /usr/bin/dbus-daemon[dbus-daemon:3002] uid/euid:1000/1000 gid/egid:1000/1000
grsec: denied text relocation in /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0, VMA:0x6ad65cdee000 0x00000000 by /opt/bin/nvidia-settings[nvidia-settings:12071] uid/euid:1000/1000 gid/egid:1000/1000, parent /bin/bash[bash:12032] uid/euid:1000/1000 gid/egid:1000/1000
grsec: denied RWX mprotect of /usr/lib64/opengl/nvidia/lib/libGL.so.355.11 by /opt/bin/nvidia-settings[nvidia-settings:12071] uid/euid:1000/1000 gid/egid:1000/1000, parent /bin/bash[bash:12032] uid/euid:1000/1000 gid/egid:1000/1000
grsec: denied text relocation in /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0, VMA:0x7ac648570000 0x00000000 by /usr/bin/parcellite[parcellite:12082] uid/euid:1000/1000 gid/egid:1000/1000, parent /home/powerman/.fluxbox/startup[startup:12032] uid/euid:1000/1000 gid/egid:1000/1000
grsec: denied text relocation in /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0, VMA:0x72d0c62f5000 0x00000000 by /usr/bin/mplayer[mplayer:13364] uid/euid:1000/1000 gid/egid:1000/1000, parent /sbin/runit[runit:1] uid/euid:0/0 gid/egid:0/0
grsec: denied RWX mprotect of /usr/lib64/opengl/nvidia/lib/libGL.so.355.11 by /usr/bin/mplayer[mplayer:13364] uid/euid:1000/1000 gid/egid:1000/1000, parent /sbin/runit[runit:1] uid/euid:0/0 gid/egid:0/0

> 2. perhaps ask nvidia if this textrel marking is intentional

Can you do this, please? I'm afraid such a question sent to their L1
support using default form on website by someone who don't really
understand what he is talking about have too small chance to get
meaningful answer from competent person.

> my guess is that this will get you an nvidia based system where you
> actually no longer have to disable MPROTECT on all binaries that
> use their GL library which would be a marked improvement, especially
> if this wtext thing doesn't stay writable for all eternity and goes
> back to r-x after some initial runtime codegen is done there (you
> can check that in /proc/pid/maps).

Well, on my system there was only two such binaries: mplayer and Xorg.
Looks like both works ok without `paxctl-ng -m` now.

As for /proc/pid/maps - I'm not sure what I should check there.
Here is /proc/$(pidof xxkb)/maps:

00000000-00000000 r-xp 00000000 08:05 9178666 /usr/bin/xxkb
00000000-00000000 r--p 00000000 08:05 9178666 /usr/bin/xxkb
00000000-00000000 rw-p 00000000 08:05 9178666 /usr/bin/xxkb
00000000-00000000 ---p 00000000 00:00 0
00000000-00000000 rw-p 00000000 00:00 0 [heap]
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 ---p 00000000 00:00 0
00000000-00000000 r-xp 00000000 08:05 1323636 /usr/lib64/libXfixes.so.3.1.0
00000000-00000000 ---p 00000000 08:05 1323636 /usr/lib64/libXfixes.so.3.1.0
00000000-00000000 r--p 00000000 08:05 1323636 /usr/lib64/libXfixes.so.3.1.0
00000000-00000000 rw-p 00000000 08:05 1323636 /usr/lib64/libXfixes.so.3.1.0
00000000-00000000 r-xp 00000000 08:05 1325355 /usr/lib64/libXcursor.so.1.0.2
00000000-00000000 ---p 00000000 08:05 1325355 /usr/lib64/libXcursor.so.1.0.2
00000000-00000000 r--p 00000000 08:05 1325355 /usr/lib64/libXcursor.so.1.0.2
00000000-00000000 rw-p 00000000 08:05 1325355 /usr/lib64/libXcursor.so.1.0.2
00000000-00000000 r-xp 00000000 08:05 7738307 /lib64/libudev.so.1.6.3
00000000-00000000 ---p 00000000 08:05 7738307 /lib64/libudev.so.1.6.3
00000000-00000000 r--p 00000000 08:05 7738307 /lib64/libudev.so.1.6.3
00000000-00000000 rw-p 00000000 08:05 7738307 /lib64/libudev.so.1.6.3
00000000-00000000 r-xp 00000000 08:05 1452211 /usr/lib64/gio/modules/libgvfsdbus.so
00000000-00000000 ---p 00000000 08:05 1452211 /usr/lib64/gio/modules/libgvfsdbus.so
00000000-00000000 r--p 00000000 08:05 1452211 /usr/lib64/gio/modules/libgvfsdbus.so
00000000-00000000 rw-p 00000000 08:05 1452211 /usr/lib64/gio/modules/libgvfsdbus.so
00000000-00000000 r-xp 00000000 08:05 1452194 /usr/lib64/gio/modules/libdconfsettings.so
00000000-00000000 ---p 00000000 08:05 1452194 /usr/lib64/gio/modules/libdconfsettings.so
00000000-00000000 r--p 00000000 08:05 1452194 /usr/lib64/gio/modules/libdconfsettings.so
00000000-00000000 rw-p 00000000 08:05 1452194 /usr/lib64/gio/modules/libdconfsettings.so
00000000-00000000 ---p 00000000 00:00 0
00000000-00000000 rw-p 00000000 00:00 0 [stack:12101]
00000000-00000000 r-xp 00000000 08:05 7208968 /usr/lib64/gvfs/libgvfscommon.so
00000000-00000000 ---p 00000000 08:05 7208968 /usr/lib64/gvfs/libgvfscommon.so
00000000-00000000 r--p 00000000 08:05 7208968 /usr/lib64/gvfs/libgvfscommon.so
00000000-00000000 rw-p 00000000 08:05 7208968 /usr/lib64/gvfs/libgvfscommon.so
00000000-00000000 r-xp 00000000 08:05 1452212 /usr/lib64/gio/modules/libgioremote-volume-monitor.so
00000000-00000000 ---p 00000000 08:05 1452212 /usr/lib64/gio/modules/libgioremote-volume-monitor.so
00000000-00000000 r--p 00000000 08:05 1452212 /usr/lib64/gio/modules/libgioremote-volume-monitor.so
00000000-00000000 rw-p 00000000 08:05 1452212 /usr/lib64/gio/modules/libgioremote-volume-monitor.so
00000000-00000000 r-xp 00000000 08:05 1323372 /usr/lib64/libnvidia-glsi.so.355.11
00000000-00000000 ---p 00000000 08:05 1323372 /usr/lib64/libnvidia-glsi.so.355.11
00000000-00000000 rw-p 00000000 08:05 1323372 /usr/lib64/libnvidia-glsi.so.355.11
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 r-xp 00000000 08:05 1461936 /usr/lib64/opengl/nvidia/lib/libEGL_nvidia.so.0
00000000-00000000 ---p 00000000 08:05 1461936 /usr/lib64/opengl/nvidia/lib/libEGL_nvidia.so.0
00000000-00000000 rw-p 00000000 08:05 1461936 /usr/lib64/opengl/nvidia/lib/libEGL_nvidia.so.0
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 r-xp 00000000 08:05 1320175 /usr/lib64/libgraphite2.so.3.0.1
00000000-00000000 ---p 00000000 08:05 1320175 /usr/lib64/libgraphite2.so.3.0.1
00000000-00000000 r--p 00000000 08:05 1320175 /usr/lib64/libgraphite2.so.3.0.1
00000000-00000000 rw-p 00000000 08:05 1320175 /usr/lib64/libgraphite2.so.3.0.1
00000000-00000000 r-xp 00000000 08:05 3153115 /usr/lib64/gcc/x86_64-pc-linux-gnu/4.8.5/libgcc_s.so.1
00000000-00000000 ---p 00000000 08:05 3153115 /usr/lib64/gcc/x86_64-pc-linux-gnu/4.8.5/libgcc_s.so.1
00000000-00000000 r--p 00000000 08:05 3153115 /usr/lib64/gcc/x86_64-pc-linux-gnu/4.8.5/libgcc_s.so.1
00000000-00000000 rw-p 00000000 08:05 3153115 /usr/lib64/gcc/x86_64-pc-linux-gnu/4.8.5/libgcc_s.so.1
00000000-00000000 r-xp 00000000 08:05 3153125 /usr/lib64/gcc/x86_64-pc-linux-gnu/4.8.5/libstdc++.so.6.0.19
00000000-00000000 ---p 00000000 08:05 3153125 /usr/lib64/gcc/x86_64-pc-linux-gnu/4.8.5/libstdc++.so.6.0.19
00000000-00000000 r--p 00000000 08:05 3153125 /usr/lib64/gcc/x86_64-pc-linux-gnu/4.8.5/libstdc++.so.6.0.19
00000000-00000000 rw-p 00000000 08:05 3153125 /usr/lib64/gcc/x86_64-pc-linux-gnu/4.8.5/libstdc++.so.6.0.19
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 r-xp 00000000 08:05 1323324 /usr/lib64/libnvidia-glcore.so.355.11
00000000-00000000 ---p 00000000 08:05 1323324 /usr/lib64/libnvidia-glcore.so.355.11
00000000-00000000 rw-p 00000000 08:05 1323324 /usr/lib64/libnvidia-glcore.so.355.11
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 r-xp 00000000 08:05 1324710 /usr/lib64/libnvidia-tls.so.355.11
00000000-00000000 ---p 00000000 08:05 1324710 /usr/lib64/libnvidia-tls.so.355.11
00000000-00000000 rw-p 00000000 08:05 1324710 /usr/lib64/libnvidia-tls.so.355.11
00000000-00000000 r-xp 00000000 08:05 1461946 /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0
00000000-00000000 ---p 00000000 08:05 1461946 /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0
00000000-00000000 rw-p 00000000 08:05 1461946 /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 r-xp 00000000 08:05 1322799 /usr/lib64/libexpat.so.1.6.0
00000000-00000000 ---p 00000000 08:05 1322799 /usr/lib64/libexpat.so.1.6.0
00000000-00000000 r--p 00000000 08:05 1322799 /usr/lib64/libexpat.so.1.6.0
00000000-00000000 rw-p 00000000 08:05 1322799 /usr/lib64/libexpat.so.1.6.0
00000000-00000000 r-xp 00000000 08:05 7740441 /lib64/libbz2.so.1.0.6
00000000-00000000 ---p 00000000 08:05 7740441 /lib64/libbz2.so.1.0.6
00000000-00000000 r--p 00000000 08:05 7740441 /lib64/libbz2.so.1.0.6
00000000-00000000 rw-p 00000000 08:05 7740441 /lib64/libbz2.so.1.0.6
00000000-00000000 r-xp 00000000 08:05 1322153 /usr/lib64/libharfbuzz.so.0.941.0
00000000-00000000 ---p 00000000 08:05 1322153 /usr/lib64/libharfbuzz.so.0.941.0
00000000-00000000 r--p 00000000 08:05 1322153 /usr/lib64/libharfbuzz.so.0.941.0
00000000-00000000 rw-p 00000000 08:05 1322153 /usr/lib64/libharfbuzz.so.0.941.0
00000000-00000000 r-xp 00000000 08:05 1322051 /usr/lib64/libicudata.so.55.1
00000000-00000000 ---p 00000000 08:05 1322051 /usr/lib64/libicudata.so.55.1
00000000-00000000 r--p 00000000 08:05 1322051 /usr/lib64/libicudata.so.55.1
00000000-00000000 rw-p 00000000 08:05 1322051 /usr/lib64/libicudata.so.55.1
00000000-00000000 r-xp 00000000 08:05 1321701 /usr/lib64/libicuuc.so.55.1
00000000-00000000 ---p 00000000 08:05 1321701 /usr/lib64/libicuuc.so.55.1
00000000-00000000 r--p 00000000 08:05 1321701 /usr/lib64/libicuuc.so.55.1
00000000-00000000 rw-p 00000000 08:05 1321701 /usr/lib64/libicuuc.so.55.1
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 r-xp 00000000 08:05 1322376 /usr/lib64/libicui18n.so.55.1
00000000-00000000 ---p 00000000 08:05 1322376 /usr/lib64/libicui18n.so.55.1
00000000-00000000 r--p 00000000 08:05 1322376 /usr/lib64/libicui18n.so.55.1
00000000-00000000 rw-p 00000000 08:05 1322376 /usr/lib64/libicui18n.so.55.1
00000000-00000000 r-xp 00000000 08:05 7738843 /lib64/librt-2.20.so
00000000-00000000 ---p 00000000 08:05 7738843 /lib64/librt-2.20.so
00000000-00000000 r--p 00000000 08:05 7738843 /lib64/librt-2.20.so
00000000-00000000 rw-p 00000000 08:05 7738843 /lib64/librt-2.20.so
00000000-00000000 r-xp 00000000 08:05 1461939 /usr/lib64/opengl/nvidia/lib/libGL.so.355.11
00000000-00000000 ---p 00000000 08:05 1461939 /usr/lib64/opengl/nvidia/lib/libGL.so.355.11
00000000-00000000 rw-p 00000000 08:05 1461939 /usr/lib64/opengl/nvidia/lib/libGL.so.355.11
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 r-xp 00000000 08:05 1323629 /usr/lib64/libXrender.so.1.3.0
00000000-00000000 ---p 00000000 08:05 1323629 /usr/lib64/libXrender.so.1.3.0
00000000-00000000 r--p 00000000 08:05 1323629 /usr/lib64/libXrender.so.1.3.0
00000000-00000000 rw-p 00000000 08:05 1323629 /usr/lib64/libXrender.so.1.3.0
00000000-00000000 r-xp 00000000 08:05 1325312 /usr/lib64/libxcb-render.so.0.0.0
00000000-00000000 ---p 00000000 08:05 1325312 /usr/lib64/libxcb-render.so.0.0.0
00000000-00000000 r--p 00000000 08:05 1325312 /usr/lib64/libxcb-render.so.0.0.0
00000000-00000000 rw-p 00000000 08:05 1325312 /usr/lib64/libxcb-render.so.0.0.0
00000000-00000000 r-xp 00000000 08:05 1323256 /usr/lib64/libxcb-shm.so.0.0.0
00000000-00000000 ---p 00000000 08:05 1323256 /usr/lib64/libxcb-shm.so.0.0.0
00000000-00000000 r--p 00000000 08:05 1323256 /usr/lib64/libxcb-shm.so.0.0.0
00000000-00000000 rw-p 00000000 08:05 1323256 /usr/lib64/libxcb-shm.so.0.0.0
00000000-00000000 r-xp 00000000 08:05 1461932 /usr/lib64/opengl/nvidia/lib/libEGL.so.1
00000000-00000000 ---p 00000000 08:05 1461932 /usr/lib64/opengl/nvidia/lib/libEGL.so.1
00000000-00000000 rw-p 00000000 08:05 1461932 /usr/lib64/opengl/nvidia/lib/libEGL.so.1
00000000-00000000 r-xp 00000000 08:05 1322637 /usr/lib64/libpixman-1.so.0.32.6
00000000-00000000 ---p 00000000 08:05 1322637 /usr/lib64/libpixman-1.so.0.32.6
00000000-00000000 r--p 00000000 08:05 1322637 /usr/lib64/libpixman-1.so.0.32.6
00000000-00000000 rw-p 00000000 08:05 1322637 /usr/lib64/libpixman-1.so.0.32.6
00000000-00000000 r-xp 00000000 08:05 1324997 /usr/lib64/libfontconfig.so.1.8.0
00000000-00000000 ---p 00000000 08:05 1324997 /usr/lib64/libfontconfig.so.1.8.0
00000000-00000000 r--p 00000000 08:05 1324997 /usr/lib64/libfontconfig.so.1.8.0
00000000-00000000 rw-p 00000000 08:05 1324997 /usr/lib64/libfontconfig.so.1.8.0
00000000-00000000 r-xp 00000000 08:05 1323677 /usr/lib64/libfreetype.so.6.11.4
00000000-00000000 ---p 00000000 08:05 1323677 /usr/lib64/libfreetype.so.6.11.4
00000000-00000000 r--p 00000000 08:05 1323677 /usr/lib64/libfreetype.so.6.11.4
00000000-00000000 rw-p 00000000 08:05 1323677 /usr/lib64/libfreetype.so.6.11.4
00000000-00000000 r-xp 00000000 08:05 1323420 /usr/lib64/libpangoft2-1.0.so.0.3600.8
00000000-00000000 ---p 00000000 08:05 1323420 /usr/lib64/libpangoft2-1.0.so.0.3600.8
00000000-00000000 r--p 00000000 08:05 1323420 /usr/lib64/libpangoft2-1.0.so.0.3600.8
00000000-00000000 rw-p 00000000 08:05 1323420 /usr/lib64/libpangoft2-1.0.so.0.3600.8
00000000-00000000 r-xp 00000000 08:05 7738844 /lib64/libresolv-2.20.so
00000000-00000000 ---p 00000000 08:05 7738844 /lib64/libresolv-2.20.so
00000000-00000000 r--p 00000000 08:05 7738844 /lib64/libresolv-2.20.so
00000000-00000000 rw-p 00000000 08:05 7738844 /lib64/libresolv-2.20.so
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 r-xp 00000000 08:05 7740442 /lib64/libz.so.1.2.8
00000000-00000000 ---p 00000000 08:05 7740442 /lib64/libz.so.1.2.8
00000000-00000000 r--p 00000000 08:05 7740442 /lib64/libz.so.1.2.8
00000000-00000000 rw-p 00000000 08:05 7740442 /lib64/libz.so.1.2.8
00000000-00000000 r-xp 00000000 08:05 1325486 /usr/lib64/libgmodule-2.0.so.0.4400.1
00000000-00000000 ---p 00000000 08:05 1325486 /usr/lib64/libgmodule-2.0.so.0.4400.1
00000000-00000000 r--p 00000000 08:05 1325486 /usr/lib64/libgmodule-2.0.so.0.4400.1
00000000-00000000 rw-p 00000000 08:05 1325486 /usr/lib64/libgmodule-2.0.so.0.4400.1
00000000-00000000 r-xp 00000000 08:05 7736793 /lib64/libuuid.so.1.3.0
00000000-00000000 ---p 00000000 08:05 7736793 /lib64/libuuid.so.1.3.0
00000000-00000000 r--p 00000000 08:05 7736793 /lib64/libuuid.so.1.3.0
00000000-00000000 rw-p 00000000 08:05 7736793 /lib64/libuuid.so.1.3.0
00000000-00000000 r-xp 00000000 08:05 1324150 /usr/lib64/libXdmcp.so.6.0.0
00000000-00000000 ---p 00000000 08:05 1324150 /usr/lib64/libXdmcp.so.6.0.0
00000000-00000000 r--p 00000000 08:05 1324150 /usr/lib64/libXdmcp.so.6.0.0
00000000-00000000 rw-p 00000000 08:05 1324150 /usr/lib64/libXdmcp.so.6.0.0
00000000-00000000 r-xp 00000000 08:05 1323274 /usr/lib64/libXau.so.6.0.0
00000000-00000000 ---p 00000000 08:05 1323274 /usr/lib64/libXau.so.6.0.0
00000000-00000000 r--p 00000000 08:05 1323274 /usr/lib64/libXau.so.6.0.0
00000000-00000000 rw-p 00000000 08:05 1323274 /usr/lib64/libXau.so.6.0.0
00000000-00000000 r-xp 00000000 08:05 1324257 /usr/lib64/libffi.so.6.0.1
00000000-00000000 ---p 00000000 08:05 1324257 /usr/lib64/libffi.so.6.0.1
00000000-00000000 r--p 00000000 08:05 1324257 /usr/lib64/libffi.so.6.0.1
00000000-00000000 rw-p 00000000 08:05 1324257 /usr/lib64/libffi.so.6.0.1
00000000-00000000 r-xp 00000000 08:05 7738839 /lib64/libm-2.20.so
00000000-00000000 ---p 00000000 08:05 7738839 /lib64/libm-2.20.so
00000000-00000000 r--p 00000000 08:05 7738839 /lib64/libm-2.20.so
00000000-00000000 rw-p 00000000 08:05 7738839 /lib64/libm-2.20.so
00000000-00000000 r-xp 00000000 08:05 1317862 /usr/lib64/libxml2.so.2.9.2
00000000-00000000 ---p 00000000 08:05 1317862 /usr/lib64/libxml2.so.2.9.2
00000000-00000000 r--p 00000000 08:05 1317862 /usr/lib64/libxml2.so.2.9.2
00000000-00000000 rw-p 00000000 08:05 1317862 /usr/lib64/libxml2.so.2.9.2
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 r-xp 00000000 08:05 1323603 /usr/lib64/libcroco-0.6.so.3.0.1
00000000-00000000 ---p 00000000 08:05 1323603 /usr/lib64/libcroco-0.6.so.3.0.1
00000000-00000000 r--p 00000000 08:05 1323603 /usr/lib64/libcroco-0.6.so.3.0.1
00000000-00000000 rw-p 00000000 08:05 1323603 /usr/lib64/libcroco-0.6.so.3.0.1
00000000-00000000 r-xp 00000000 08:05 1324751 /usr/lib64/libpng16.so.16.18.0
00000000-00000000 ---p 00000000 08:05 1324751 /usr/lib64/libpng16.so.16.18.0
00000000-00000000 r--p 00000000 08:05 1324751 /usr/lib64/libpng16.so.16.18.0
00000000-00000000 rw-p 00000000 08:05 1324751 /usr/lib64/libpng16.so.16.18.0
00000000-00000000 r-xp 00000000 08:05 1319759 /usr/lib64/libcairo.so.2.11400.2
00000000-00000000 ---p 00000000 08:05 1319759 /usr/lib64/libcairo.so.2.11400.2
00000000-00000000 r--p 00000000 08:05 1319759 /usr/lib64/libcairo.so.2.11400.2
00000000-00000000 rw-p 00000000 08:05 1319759 /usr/lib64/libcairo.so.2.11400.2
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 r-xp 00000000 08:05 1314690 /usr/lib64/libpango-1.0.so.0.3600.8
00000000-00000000 ---p 00000000 08:05 1314690 /usr/lib64/libpango-1.0.so.0.3600.8
00000000-00000000 r--p 00000000 08:05 1314690 /usr/lib64/libpango-1.0.so.0.3600.8
00000000-00000000 rw-p 00000000 08:05 1314690 /usr/lib64/libpango-1.0.so.0.3600.8
00000000-00000000 r-xp 00000000 08:05 1323366 /usr/lib64/libpangocairo-1.0.so.0.3600.8
00000000-00000000 ---p 00000000 08:05 1323366 /usr/lib64/libpangocairo-1.0.so.0.3600.8
00000000-00000000 r--p 00000000 08:05 1323366 /usr/lib64/libpangocairo-1.0.so.0.3600.8
00000000-00000000 rw-p 00000000 08:05 1323366 /usr/lib64/libpangocairo-1.0.so.0.3600.8
00000000-00000000 r-xp 00000000 08:05 1325484 /usr/lib64/libgio-2.0.so.0.4400.1
00000000-00000000 ---p 00000000 08:05 1325484 /usr/lib64/libgio-2.0.so.0.4400.1
00000000-00000000 r--p 00000000 08:05 1325484 /usr/lib64/libgio-2.0.so.0.4400.1
00000000-00000000 rw-p 00000000 08:05 1325484 /usr/lib64/libgio-2.0.so.0.4400.1
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 r-xp 00000000 08:05 1325377 /usr/lib64/libglib-2.0.so.0.4400.1
00000000-00000000 ---p 00000000 08:05 1325377 /usr/lib64/libglib-2.0.so.0.4400.1
00000000-00000000 r--p 00000000 08:05 1325377 /usr/lib64/libglib-2.0.so.0.4400.1
00000000-00000000 rw-p 00000000 08:05 1325377 /usr/lib64/libglib-2.0.so.0.4400.1
00000000-00000000 r-xp 00000000 08:05 1323355 /usr/lib64/libgdk_pixbuf-2.0.so.0.3000.8
00000000-00000000 ---p 00000000 08:05 1323355 /usr/lib64/libgdk_pixbuf-2.0.so.0.3000.8
00000000-00000000 r--p 00000000 08:05 1323355 /usr/lib64/libgdk_pixbuf-2.0.so.0.3000.8
00000000-00000000 rw-p 00000000 08:05 1323355 /usr/lib64/libgdk_pixbuf-2.0.so.0.3000.8
00000000-00000000 r-xp 00000000 08:05 1322818 /usr/lib64/libICE.so.6.3.0
00000000-00000000 ---p 00000000 08:05 1322818 /usr/lib64/libICE.so.6.3.0
00000000-00000000 r--p 00000000 08:05 1322818 /usr/lib64/libICE.so.6.3.0
00000000-00000000 rw-p 00000000 08:05 1322818 /usr/lib64/libICE.so.6.3.0
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 r-xp 00000000 08:05 1323843 /usr/lib64/libSM.so.6.0.1
00000000-00000000 ---p 00000000 08:05 1323843 /usr/lib64/libSM.so.6.0.1
00000000-00000000 r--p 00000000 08:05 1323843 /usr/lib64/libSM.so.6.0.1
00000000-00000000 rw-p 00000000 08:05 1323843 /usr/lib64/libSM.so.6.0.1
00000000-00000000 r-xp 00000000 08:05 7738837 /lib64/libdl-2.20.so
00000000-00000000 ---p 00000000 08:05 7738837 /lib64/libdl-2.20.so
00000000-00000000 r--p 00000000 08:05 7738837 /lib64/libdl-2.20.so
00000000-00000000 rw-p 00000000 08:05 7738837 /lib64/libdl-2.20.so
00000000-00000000 r-xp 00000000 08:05 1324151 /usr/lib64/libxcb.so.1.1.0
00000000-00000000 ---p 00000000 08:05 1324151 /usr/lib64/libxcb.so.1.1.0
00000000-00000000 r--p 00000000 08:05 1324151 /usr/lib64/libxcb.so.1.1.0
00000000-00000000 rw-p 00000000 08:05 1324151 /usr/lib64/libxcb.so.1.1.0
00000000-00000000 r-xp 00000000 08:05 7738857 /lib64/libc-2.20.so
00000000-00000000 ---p 00000000 08:05 7738857 /lib64/libc-2.20.so
00000000-00000000 r--p 00000000 08:05 7738857 /lib64/libc-2.20.so
00000000-00000000 rw-p 00000000 08:05 7738857 /lib64/libc-2.20.so
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 r-xp 00000000 08:05 7738858 /lib64/libpthread-2.20.so
00000000-00000000 ---p 00000000 08:05 7738858 /lib64/libpthread-2.20.so
00000000-00000000 r--p 00000000 08:05 7738858 /lib64/libpthread-2.20.so
00000000-00000000 rw-p 00000000 08:05 7738858 /lib64/libpthread-2.20.so
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 r-xp 00000000 08:05 1325435 /usr/lib64/libXext.so.6.4.0
00000000-00000000 ---p 00000000 08:05 1325435 /usr/lib64/libXext.so.6.4.0
00000000-00000000 r--p 00000000 08:05 1325435 /usr/lib64/libXext.so.6.4.0
00000000-00000000 rw-p 00000000 08:05 1325435 /usr/lib64/libXext.so.6.4.0
00000000-00000000 r-xp 00000000 08:05 1323933 /usr/lib64/libgobject-2.0.so.0.4400.1
00000000-00000000 ---p 00000000 08:05 1323933 /usr/lib64/libgobject-2.0.so.0.4400.1
00000000-00000000 r--p 00000000 08:05 1323933 /usr/lib64/libgobject-2.0.so.0.4400.1
00000000-00000000 rw-p 00000000 08:05 1323933 /usr/lib64/libgobject-2.0.so.0.4400.1
00000000-00000000 r-xp 00000000 08:05 1322498 /usr/lib64/librsvg-2.so.2.40.10
00000000-00000000 ---p 00000000 08:05 1322498 /usr/lib64/librsvg-2.so.2.40.10
00000000-00000000 r--p 00000000 08:05 1322498 /usr/lib64/librsvg-2.so.2.40.10
00000000-00000000 rw-p 00000000 08:05 1322498 /usr/lib64/librsvg-2.so.2.40.10
00000000-00000000 r-xp 00000000 08:05 1323610 /usr/lib64/libgdk_pixbuf_xlib-2.0.so.0.3000.8
00000000-00000000 ---p 00000000 08:05 1323610 /usr/lib64/libgdk_pixbuf_xlib-2.0.so.0.3000.8
00000000-00000000 r--p 00000000 08:05 1323610 /usr/lib64/libgdk_pixbuf_xlib-2.0.so.0.3000.8
00000000-00000000 rw-p 00000000 08:05 1323610 /usr/lib64/libgdk_pixbuf_xlib-2.0.so.0.3000.8
00000000-00000000 r-xp 00000000 08:05 1325363 /usr/lib64/libXt.so.6.0.0
00000000-00000000 ---p 00000000 08:05 1325363 /usr/lib64/libXt.so.6.0.0
00000000-00000000 r--p 00000000 08:05 1325363 /usr/lib64/libXt.so.6.0.0
00000000-00000000 rw-p 00000000 08:05 1325363 /usr/lib64/libXt.so.6.0.0
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 r-xp 00000000 08:05 1324073 /usr/lib64/libX11.so.6.3.0
00000000-00000000 ---p 00000000 08:05 1324073 /usr/lib64/libX11.so.6.3.0
00000000-00000000 r--p 00000000 08:05 1324073 /usr/lib64/libX11.so.6.3.0
00000000-00000000 rw-p 00000000 08:05 1324073 /usr/lib64/libX11.so.6.3.0
00000000-00000000 r-xp 00000000 08:05 7738847 /lib64/ld-2.20.so
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 r--s 00000000 08:05 1454367 /usr/lib64/gconv/gconv-modules.cache
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 r--p 00000000 00:00 0 [vvar]
00000000-00000000 r-xp 00000000 00:00 0 [vdso]
00000000-00000000 r--p 00000000 08:05 7738847 /lib64/ld-2.20.so
00000000-00000000 rw-p 00000000 08:05 7738847 /lib64/ld-2.20.so
00000000-00000000 rw-p 00000000 00:00 0
00000000-00000000 rw-p 00000000 00:00 0 [stack]
ffffffffff600000-ffffffffff601000 r--p 00000000 00:00 0 [vsyscall]

--
WBR, Alex.
Re: pidgin & nvidia-drivers-355.11 [ In reply to ]
On 19 Sep 2015 at 20:24, Alex Efros wrote:

> On Sat, Sep 19, 2015 at 05:50:20PM +0200, PaX Team wrote:
> > so there're two things left to do:
> > 1. enable ELFRELOCS in your kernel config (and keep MPROTECT enforced
> > on all binaries)
>
> Done. This works. I don't really like it, but let it be, at least for now.

well, disabling MPROTECT is much worse, this way you can at least
control which binaries can map libaries with textrels.

> At a glance only difference is few messages in kernel log:
>
> grsec: denied text relocation in /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0,

did you see only a single log per executable or two? i'm asking it
because this method of runtime codegen would produce two messages
(and the grsec log message is actually wrong as it's not a denial
but rather the opposite, spender will fix it in the next patch ;).

> RWX mprotect of /usr/lib64/opengl/nvidia/lib/libGL.so.355.11 by /opt/bin/nvidia-settings

this is probably another attempt at runtime codegen by the using
mmap/mprotect, if this didn't cause app failure then it means that
their libGL has some fallback path to cope with this.

> > 2. perhaps ask nvidia if this textrel marking is intentional
>
> Can you do this, please? I'm afraid such a question sent to their L1
> support using default form on website by someone who don't really
> understand what he is talking about have too small chance to get
> meaningful answer from competent person.

unfortunately we have no direct contact to nvidia guys (anyone with
access there feel free to speak up ;) so i can't do more than what
you described above. in any case, this is not critical information,
would just satisfy my own curiosity ;).

> As for /proc/pid/maps - I'm not sure what I should check there.
> Here is /proc/$(pidof xxkb)/maps:
>
> 00000000-00000000 r-xp 00000000 08:05 1461946 /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0
> 00000000-00000000 ---p 00000000 08:05 1461946 /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0
> 00000000-00000000 rw-p 00000000 08:05 1461946 /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0

the above shows that the r-x segment isn't split up which suggests
that the whole textrel dance was done properly but then you should
have seen two logs per executable...
Re: pidgin & nvidia-drivers-355.11 [ In reply to ]
Hi!

On Sat, Sep 19, 2015 at 09:33:15PM +0200, PaX Team wrote:
> did you see only a single log per executable or two? i'm asking it
> because this method of runtime codegen would produce two messages
> (and the grsec log message is actually wrong as it's not a denial
> but rather the opposite, spender will fix it in the next patch ;).

Two. I've omit second because it's same as first. Here is full log for xxkb:

2015-09-19_19:37:29.08354 kern.alert: grsec: denied text relocation in /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0, VMA:0x77ad9d9cf000 0x00000000 by /usr/bin/xxkb[xxkb:2997] uid/euid:1000/1000 gid/egid:1000/1000, parent /bin/bash[bash:12208] uid/euid:1000/1000 gid/egid:1000/1000
2015-09-19_19:37:29.08357 kern.alert: grsec: denied text relocation in /usr/lib64/opengl/nvidia/lib/libGLdispatch.so.0, VMA:0x77ad9d9cf000 0x00000000 by /usr/bin/xxkb[xxkb:2997] uid/euid:1000/1000 gid/egid:1000/1000, parent /bin/bash[bash:12208] uid/euid:1000/1000 gid/egid:1000/1000
2015-09-19_19:37:29.08853 kern.alert: grsec: denied RWX mprotect of /usr/lib64/opengl/nvidia/lib/libGL.so.355.11 by /usr/bin/xxkb[xxkb:2997] uid/euid:1000/1000 gid/egid:1000/1000, parent /bin/bash[bash:12208] uid/euid:1000/1000 gid/egid:1000/1000

--
WBR, Alex.
Re: pidgin & nvidia-drivers-355.11 [ In reply to ]
Hi!

On Sat, Sep 19, 2015 at 09:33:15PM +0200, PaX Team wrote:
> > > 1. enable ELFRELOCS in your kernel config (and keep MPROTECT enforced
> > > on all binaries)
> > Done. This works. I don't really like it, but let it be, at least for now.
> well, disabling MPROTECT is much worse, this way you can at least
> control which binaries can map libaries with textrels.

I don't get it. With MPROTECT I control which binaries won't be protected.
With ELFRELOCS I don't control binaries and all of them will be less protected.
And I doubt "all less protected" is better than "few not protected".

--
WBR, Alex.
Re: pidgin & nvidia-drivers-355.11 [ In reply to ]
On 19 Sep 2015 at 22:40, Alex Efros wrote:

> Hi!
>
> On Sat, Sep 19, 2015 at 09:33:15PM +0200, PaX Team wrote:
> > > > 1. enable ELFRELOCS in your kernel config (and keep MPROTECT enforced
> > > > on all binaries)
> > > Done. This works. I don't really like it, but let it be, at least for now.
> > well, disabling MPROTECT is much worse, this way you can at least
> > control which binaries can map libaries with textrels.
>
> I don't get it. With MPROTECT I control which binaries won't be protected.

not quite ;). for MPROTECT to be effective you also need to control what
the application can do to the filesystem (in particular you have to prevent
anything equivalent to the sequence of open/write/mmap). this requires the
use of some access control system that PaX itself lacks (by design). in
grsecurity's case it's the RBAC system with a proper policy. if you're not
doing this part then MPROTECT doesn't provide you the guarantees over runtime
codegen.

> With ELFRELOCS I don't control binaries and all of them will be less protected.
> And I doubt "all less protected" is better than "few not protected".

based on the above explanation now you can probably see that once you have
RBAC (or equivalent) in place then that same mechanism can also be used to
control which apps can load textrel libs which is how you win twice:

1. MPROTECT can be enforced on everything (or at least no need to relax
it because of textrels)
2. only specifically allowed apps can punch a controlled hole into MPROTECT.