RejectedSoftware Forums

Sign up

setTimer stopped working on master?

This code worked perfectly before:

    m_connectTimer = setTimer(dur!"msecs"(1), { tryConnect(); }, false);

But on vibed master, 'tryConnect' is never called. Vibed log shows this (I also create a second timer somewhere else.. That doesn't trigger either):


rearming timer 1 in 0.001 s
Schedule timer 1
Rescheduled timer event for 0.000967 seconds
first timer 1 in 0.0009662 s
rearming timer 2 in 1 s
Schedule timer 2
first timer 2 in 0.999981 s
Processing due timers
first timeout: 0.0008818
Timer 1 fired (false/true)
Creating new fiber...
Event loop not running at task start - yielding.
Rescheduled timer event for 0.999957 seconds
Processing due timers
no timers scheduled
Processing due timers
Processing due timers
first timeout: 0.998706
no timers scheduled
Rescheduled timer event for 0.998706 seconds
create driver
...

Note that I am driving the event loop manually by calling 'processEvents' regularly. It always returns true in the failing case.

Re: setTimer stopped working on master?

On Fri, 28 Feb 2014 20:41:50 GMT, Øivind Loe wrote:

This code worked perfectly before:

    m_connectTimer = setTimer(dur!"msecs"(1), { tryConnect(); }, false);

But on vibed master, 'tryConnect' is never called. Vibed log shows this (I also create a second timer somewhere else.. That doesn't trigger either):


rearming timer 1 in 0.001 s
Schedule timer 1
Rescheduled timer event for 0.000967 seconds
first timer 1 in 0.0009662 s
rearming timer 2 in 1 s
Schedule timer 2
first timer 2 in 0.999981 s
Processing due timers
first timeout: 0.0008818
Timer 1 fired (false/true)
Creating new fiber...
Event loop not running at task start - yielding.
Rescheduled timer event for 0.999957 seconds
Processing due timers
no timers scheduled
Processing due timers
Processing due timers
first timeout: 0.998706
no timers scheduled
Rescheduled timer event for 0.998706 seconds
create driver
...

Note that I am driving the event loop manually by calling 'processEvents' regularly. It always returns true in the failing case.

Which revision of vibe.d exactly are you on and is it the normal libevent based driver or the win32 one?

This smells very much like #458. But that is supposed to be fixed already.

Re: setTimer stopped working on master?

Which revision of vibe.d exactly are you on and is it the normal libevent based driver or the win32 one?

This smells very much like #458. But that is supposed to be fixed already.

I am on Ubuntu 13.10, 64-bit. Using dub to get ~master. Just did a 'dub upgrade', and it still fails. Don't know how to check the exact version in use

I am making both libev and libevent available, and set both Havelibev and Havelibevent versions.

Re: setTimer stopped working on master?

On Fri, 28 Feb 2014 21:38:46 GMT, Øivind Loe wrote:

Which revision of vibe.d exactly are you on and is it the normal libevent based driver or the win32 one?

This smells very much like #458. But that is supposed to be fixed already.

I am on Ubuntu 13.10, 64-bit. Using dub to get ~master. Just did a 'dub upgrade', and it still fails. Don't know how to check the exact version in use

I am making both libev and libevent available, and set both Havelibev and Havelibevent versions.

Okay, taking a closer look, this actually hasn't got anything to do with the timers, but rather with processEvents never triggering an idle event and thus never waking up the task that is supposed to run the callback. 98024b4 should have this fixed now.

Re: setTimer stopped working on master?

On Fri, 28 Feb 2014 22:41:12 GMT, Sönke Ludwig wrote:

On Fri, 28 Feb 2014 21:38:46 GMT, Øivind Loe wrote:

Which revision of vibe.d exactly are you on and is it the normal libevent based driver or the win32 one?

This smells very much like #458. But that is supposed to be fixed already.

I am on Ubuntu 13.10, 64-bit. Using dub to get ~master. Just did a 'dub upgrade', and it still fails. Don't know how to check the exact version in use

I am making both libev and libevent available, and set both Havelibev and Havelibevent versions.

Okay, taking a closer look, this actually hasn't got anything to do with the timers, but rather with processEvents never triggering an idle event and thus never waking up the task that is supposed to run the callback. 98024b4 should have this fixed now.

Thanks. That fixes it. There is still something strange though.. because my MongoDB connection dies unexpectedly at some point

PROC EXCEPTION: std.exception.ErrnoException: Error reading from socket 62 (Connection refused)
----------------
./dboss-test(void vibe.core.drivers.libevent2_tcp.Libevent2TCPConnection.read(ubyte[])+0x155) [0x133d79d]
./dboss-test(void vibe.db.mongo.connection.MongoConnection.recv(ubyte[])+0x6d) [0x12ffaa5]
./dboss-test(int vibe.db.mongo.connection.MongoConnection.recvInt()+0x2c) [0x12ff90c]
./dboss-test(vibe.db.mongo.connection.Reply vibe.db.mongo.connection.MongoConnection.recvReply(int)+0x2a) [0x12ff402]
./dboss-test(vibe.db.mongo.connection.Reply vibe.db.mongo.connection.MongoConnection.call(vibe.db.mongo.connection.Message)+0x31) [0x12ff769]
./dboss-test(vibe.db.mongo.connection.Reply vibe.db.mongo.connection.MongoConnection.query(immutable(char)[], vibe.db.mongo.connection.QueryFlags, int, int, vibe.data.bson.Bson, vibe.data.bson.Bson)+0x135) [0x12fe585]
./dboss-test(immutable(vibe.db.mongo.connection._MongoErrorDescription) vibe.db.mongo.connection.MongoConnection.getLastError(immutable(char)[])+0x6cf) [0x12ff097]
./dboss-test(void vibe.db.mongo.connection.MongoConnection.checkForError(immutable(char)[])+0x84) [0x12ffb74]
./dboss-test(void vibe.db.mongo.connection.MongoConnection.insert(immutable(char)[], vibe.db.mongo.connection.InsertFlags, vibe.data.bson.Bson[])+0x259) [0x12fe409]
./dboss-test(void vibe.db.mongo.collection.MongoCollection.insert!(boss.proc.proclog.DBLogEntry).insert(boss.proc.proclog.DBLogEntry, vibe.db.mongo.connection.InsertFlags)+0x1c1) [0xf52381]
./dboss-test(void boss.proc.proclog.ProcLog.run()+0xe14) [0xf50fb4]
./dboss-test(_D4boss4core8proctype8ProcType38__T5spawnTC4boss4proc7proclog7ProcLogZ5spawnFE4boss4util3log8LogLevelS4boss4core4addr4AddrS4boss4core4addr4AddrS4boss4core4addr4AddrS4boss4core4addr4AddrPAyhZC4boss4core3con3Con14__funcliteral7FS4boss4core4addr4AddrS4boss4core4addr4AddrAyhZv+0x10a) [0xdbbbea]

Does that ring a bell too? :)

Re: setTimer stopped working on master?

On Sat, 01 Mar 2014 22:55:43 GMT, Øivind Loe wrote:

Thanks. That fixes it. There is still something strange though.. because my MongoDB connection dies unexpectedly at some point
./dboss-test(immutable(vibe.db.mongo.connection._MongoErrorDescription) vibe.db.mongo.connection.MongoConnection.getLastError(immutable(char)[])+0x6cf) [0x12ff097]

I think you'd have more success looking at the MongoDB log file. I've only managed to get MongoDB 2.4 working, I think the connection gets closed because of an invalid command, I see this:

Bson[string] command_and_options = [ "getLastError": Bson(1.0) ];

and it looks like it should be

Bson[string] command_and_options = [ "getLastError": Bson(1) ];

according to the spec at http://docs.mongodb.org/manual/reference/command/getLastError/

There could be a few adjustments to do before 2.6 gets covered. I'm not sure what version you're using

Re: setTimer stopped working on master?

On Mon, 03 Mar 2014 00:28:26 GMT, Etienne Cimon wrote:

On Sat, 01 Mar 2014 22:55:43 GMT, Øivind Loe wrote:

Thanks. That fixes it. There is still something strange though.. because my MongoDB connection dies unexpectedly at some point
./dboss-test(immutable(vibe.db.mongo.connection._MongoErrorDescription) vibe.db.mongo.connection.MongoConnection.getLastError(immutable(char)[])+0x6cf) [0x12ff097]

I think you'd have more success looking at the MongoDB log file. I've only managed to get MongoDB 2.4 working, I think the connection gets closed because of an invalid command, I see this:

Bson[string] command_and_options = [ "getLastError": Bson(1.0) ];

and it looks like it should be

Bson[string] command_and_options = [ "getLastError": Bson(1) ];

according to the spec at http://docs.mongodb.org/manual/reference/command/getLastError/

There could be a few adjustments to do before 2.6 gets covered. I'm not sure what version you're using

For now, I reconnect to MongoDB every time I get an exception.. Keeps my program running. Nothing special in MongoDB log.. Keeps outputting this:

Mon Mar  3 20:08:47.037 [conn310] end connection 127.0.0.1:49979 (2 connections now open)
Mon Mar  3 20:08:47.038 [initandlisten] connection accepted from 127.0.0.1:54743 #311 (3 connections now open)
Mon Mar  3 20:08:48.916 [conn311] end connection 127.0.0.1:54743 (2 connections now open)
Mon Mar  3 20:08:48.916 [initandlisten] connection accepted from 127.0.0.1:57121 #312 (3 connections now open)
Mon Mar  3 20:08:49.974 [conn312] end connection 127.0.0.1:57121 (2 connections now open)
Mon Mar  3 20:08:49.974 [initandlisten] connection accepted from 127.0.0.1:49872 #313 (3 connections now open)

Found one more issue with the Timer now. I just noticed I get a seg-fault in the Timer destructor in vibed on GC collect:

Call-stack from GDB:

0  in vibe.core.core.Timer.__dtor() of /home/oivind/.dub/packages/vibe-d-master/source/vibe/core/core.d:555
1  in boss.proc.procio.ProcIO.__fieldDtor() of src/boss/proc/procio.d:39
2  in rt_finalize2
3  in gc.gc.Gcx.fullcollect()
4  in gc.gc.GC.mallocNoSync()
5  in gc.gc.GC.malloc()
6  in gc_qalloc
7  in _adDupT

Code it points at:

struct Timer {
	private {
		EventDriver m_driver;
		size_t m_id;
		debug uint m_magicNumber = 0x4d34f916;
	}

	private this(EventDriver driver, size_t id)
	{
		m_driver = driver;
		m_id = id;
	}

	this(this)
	{
		debug assert(m_magicNumber == 0x4d34f916);
		if (m_driver) m_driver.acquireTimer(m_id);
	}

	~this()
	{
		debug assert(m_magicNumber == 0x4d34f916);
		if (m_driver) m_driver.releaseTimer(m_id);     <------------ Here
	}


Locals:

(gdb) print m_driver
$3 = (struct vibe.core.driver.EventDriver *) 0x7fffd3738db8
(gdb) print m_id
$4 = 2
(gdb) print m_magicNumber
$5 = 1295317270
(gdb) print this
$6 = (struct vibe.core.core.Timer *) 0x7fffd372c8c0
(gdb) 

Re: setTimer stopped working on master?

Am 04.03.2014 03:17, schrieb Øivind Loe:

On Mon, 03 Mar 2014 00:28:26 GMT, Etienne Cimon wrote:

On Sat, 01 Mar 2014 22:55:43 GMT, Øivind Loe wrote:

Thanks. That fixes it. There is still something strange though.. because my MongoDB connection dies unexpectedly at some point
./dboss-test(immutable(vibe.db.mongo.connection._MongoErrorDescription) vibe.db.mongo.connection.MongoConnection.getLastError(immutable(char)[])+0x6cf) [0x12ff097]

I think you'd have more success looking at the MongoDB log file. I've only managed to get MongoDB 2.4 working, I think the connection gets closed because of an invalid command, I see this:

Bson[string] command_and_options = [ "getLastError": Bson(1.0) ];

and it looks like it should be

Bson[string] command_and_options = [ "getLastError": Bson(1) ];

according to the spec at http://docs.mongodb.org/manual/reference/command/getLastError/

There could be a few adjustments to do before 2.6 gets covered. I'm not sure what version you're using

For now, I reconnect to MongoDB every time I get an exception.. Keeps my program running. Nothing special in MongoDB log.. Keeps outputting this:

Mon Mar  3 20:08:47.037 [conn310] end connection 127.0.0.1:49979 (2 connections now open)
Mon Mar  3 20:08:47.038 [initandlisten] connection accepted from 127.0.0.1:54743 #311 (3 connections now open)
Mon Mar  3 20:08:48.916 [conn311] end connection 127.0.0.1:54743 (2 connections now open)
Mon Mar  3 20:08:48.916 [initandlisten] connection accepted from 127.0.0.1:57121 #312 (3 connections now open)
Mon Mar  3 20:08:49.974 [conn312] end connection 127.0.0.1:57121 (2 connections now open)
Mon Mar  3 20:08:49.974 [initandlisten] connection accepted from 127.0.0.1:49872 #313 (3 connections now open)

Can you retry starting mongod with -v? It should list all commands and
their responses, maybe that gives a hint.

Found one more issue with the Timer now. I just noticed I get a seg-fault in the Timer destructor in vibed on GC collect:

Call-stack from GDB:

0  in vibe.core.core.Timer.__dtor() of /home/oivind/.dub/packages/vibe-d-master/source/vibe/core/core.d:555
1  in boss.proc.procio.ProcIO.__fieldDtor() of src/boss/proc/procio.d:39
2  in rt_finalize2
3  in gc.gc.Gcx.fullcollect()
4  in gc.gc.GC.mallocNoSync()
5  in gc.gc.GC.malloc()
6  in gc_qalloc
7  in _adDupT

Code it points at:

struct Timer {
	private {
		EventDriver m_driver;
		size_t m_id;
		debug uint m_magicNumber = 0x4d34f916;
	}

	private this(EventDriver driver, size_t id)
	{
		m_driver = driver;
		m_id = id;
	}

	this(this)
	{
		debug assert(m_magicNumber == 0x4d34f916);
		if (m_driver) m_driver.acquireTimer(m_id);
	}

	~this()
	{
		debug assert(m_magicNumber == 0x4d34f916);
		if (m_driver) m_driver.releaseTimer(m_id);     <------------ Here
	}


Locals:

(gdb) print m_driver
$3 = (struct vibe.core.driver.EventDriver *) 0x7fffd3738db8
(gdb) print m_id
$4 = 2
(gdb) print m_magicNumber
$5 = 1295317270
(gdb) print this
$6 = (struct vibe.core.core.Timer *) 0x7fffd372c8c0
(gdb)

Judging by the code, it doesn't really make sense to have a segfault at
that position - it could happen inside of releaseTimer, but there are
no indirections in Timer.~this() apart from the this pointer itself.
Can you dump the assembly (and registers) around the crash, too?

Re: setTimer stopped working on master?

Can you retry starting mongod with -v? It should list all commands and
their responses, maybe that gives a hint.

Here is an example. Nothing really special here(?). I am running MongoDB v2.4.9. Might be a problem with that version.

Wed Mar  5 17:58:51.518 [conn119] command log.$cmd command: { getLastError: 1.0 } ntoreturn:1 keyUpdates:0  reslen:67 0ms
Wed Mar  5 17:58:51.518 [conn119] insert log.boss-test ninserted:1 keyUpdates:0 locks(micros) w:23 0ms
Wed Mar  5 17:58:51.518 [conn119] run command log.$cmd { getLastError: 1.0 }
Wed Mar  5 17:58:51.518 [conn119] command log.$cmd command: { getLastError: 1.0 } ntoreturn:1 keyUpdates:0  reslen:67 0ms
Wed Mar  5 17:58:51.518 [conn119] insert log.boss-test ninserted:1 keyUpdates:0 locks(micros) w:14 0ms
Wed Mar  5 17:58:51.518 [conn119] run command log.$cmd { getLastError: 1.0 }
Wed Mar  5 17:58:51.518 [conn119] command log.$cmd command: { getLastError: 1.0 } ntoreturn:1 keyUpdates:0  reslen:67 0ms
Wed Mar  5 17:58:51.565 [conn119] end connection 127.0.0.1:52573 (1 connection now open)
Wed Mar  5 17:58:51.565 [initandlisten] connection accepted from 127.0.0.1:33340 #120 (2 connections now open)
Wed Mar  5 17:58:51.565 [conn120] insert log.boss-test ninserted:1 keyUpdates:0 locks(micros) w:47 0ms
Wed Mar  5 17:58:51.565 [conn120] run command log.$cmd { getLastError: 1.0 }
Wed Mar  5 17:58:51.565 [conn120] command log.$cmd command: { getLastError: 1.0 } ntoreturn:1 keyUpdates:0  reslen:67 0ms
Wed Mar  5 17:58:51.565 [conn120] insert log.boss-test ninserted:1 keyUpdates:0 locks(micros) w:17 0ms
Wed Mar  5 17:58:51.565 [conn120] run command log.$cmd { getLastError: 1.0 }
Wed Mar  5 17:58:51.565 [conn120] command log.$cmd command: { getLastError: 1.0 } ntoreturn:1 keyUpdates:0  reslen:67 0ms
Wed Mar  5 17:58:51.567 [conn120] insert log.boss-test ninserted:1 keyUpdates:0 locks(micros) w:16 1ms
Wed Mar  5 17:58:51.567 [conn120] run command log.$cmd { getLastError: 1.0 }
Wed Mar  5 17:58:51.567 [conn120] command log.$cmd command: { getLastError: 1.0 } ntoreturn:1 keyUpdates:0  reslen:67 0ms
Wed Mar  5 17:58:51.568 [conn120] insert log.boss-test ninserted:1 keyUpdates:0 locks(micros) w:49 0ms

Judging by the code, it doesn't really make sense to have a segfault at
that position - it could happen inside of releaseTimer, but there are
no indirections in Timer.~this() apart from the this pointer itself.
Can you dump the assembly (and registers) around the crash, too?


0x000000000128fd90 <_D4vibe4core4core5Timer6__dtorMFZv+0>:  push   %rbp
0x000000000128fd91 <_D4vibe4core4core5Timer6__dtorMFZv+1>:  mov    %rsp,%rbp
0x000000000128fd94 <_D4vibe4core4core5Timer6__dtorMFZv+4>:  sub    $0x10,%rsp
0x000000000128fd98 <_D4vibe4core4core5Timer6__dtorMFZv+8>:  mov    %rdi,-0x8(%rbp)
0x000000000128fd9c <_D4vibe4core4core5Timer6__dtorMFZv+12>: mov    -0x8(%rbp),%rax
0x000000000128fda0 <_D4vibe4core4core5Timer6__dtorMFZv+16>: cmpl   $0x4d34f916,0x10(%rax)
0x000000000128fda7 <_D4vibe4core4core5Timer6__dtorMFZv+23>: je     0x128fdb3 <_D4vibe4core4core5Timer6__dtorMFZv+35>
0x000000000128fda9 <_D4vibe4core4core5Timer6__dtorMFZv+25>: mov    $0x22a,%edi
0x000000000128fdae <_D4vibe4core4core5Timer6__dtorMFZv+30>: callq  0x12971d0 <_D4vibe4core4core8__assertFiZv>
0x000000000128fdb3 <_D4vibe4core4core5Timer6__dtorMFZv+35>: mov    -0x8(%rbp),%rcx
0x000000000128fdb7 <_D4vibe4core4core5Timer6__dtorMFZv+39>: cmpq   $0x0,(%rcx)
0x000000000128fdbb <_D4vibe4core4core5Timer6__dtorMFZv+43>: je     0x128fdcf <_D4vibe4core4core5Timer6__dtorMFZv+63>
0x000000000128fdbd <_D4vibe4core4core5Timer6__dtorMFZv+45>: mov    -0x8(%rbp),%rdx
0x000000000128fdc1 <_D4vibe4core4core5Timer6__dtorMFZv+49>: mov    0x8(%rdx),%rsi
0x000000000128fdc5 <_D4vibe4core4core5Timer6__dtorMFZv+53>: mov    (%rdx),%rdi
0x000000000128fdc8 <_D4vibe4core4core5Timer6__dtorMFZv+56>: mov    (%rdi),%rax
0x000000000128fdcb <_D4vibe4core4core5Timer6__dtorMFZv+59>: rex.W callq *0x78(%rax)
0x000000000128fdcf <_D4vibe4core4core5Timer6__dtorMFZv+63>: leaveq 
0x000000000128fdd0 <_D4vibe4core4core5Timer6__dtorMFZv+64>: retq   
rax      0x0
rbx      0x17a8f70
rcx      0x7fffd3a36ac0
rdx      0x7fffd3a36ac0
rsi      0x2
rdi      0x7fffd3a33fb8
rbp      0x7fffffffd570
rsp      0x7fffffffd560
r8       0x7fffd3a36a00
r9       0x3fa3
r10      0x1a04768
r11      0x20
r12      0x1a04710
r13      0xfe8
r14      0x20
r15      0x1
rip      0x128fdcb
eflags   0x10206
cs       0x33
ss       0x2b
ds       0x0
es       0x0
fs       0x0
gs       0x0
st0      0x0
st1      0x0
st2      0x0
st3      0x0
st4      0x0
st5      0x0
st6      0x3e8
st7      0xf4240
fctrl    0x37f
fstat    0x20
ftag     0xffff
fiseg    0x0
fioff    0x10d8beb
foseg    0x7fff
fooff    0xffffdb10
fop      0x0
xmm0     {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm1     {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm2     {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm3     {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm4     {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm5     {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm6     {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm7     {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm8     {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm9     {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x4d, 0x0, 0x0, 0x0, 0x73, 0x0, 0x0, 0x0, 0x67, 0x0, 0x0, 0x0, 0x57, 0x0, 0x0, 0x0}, v8_int16 = {0x4d, 0x0, 0x73, 0x0, 0x67, 0x0, 0x57, 0x0}, v4_int32 = {0x4d, 0x73, 0x67, 0x57}, v2_int64 = {0x730000004d, 0x5700000067}, uint128 = 0x0000005700000067000000730000004d}
xmm10    {v4_float = {0x80000000, 0x80000000, 0x80000000, 0x80000000}, v2_double = {0x8000000000000000, 0x8000000000000000}, v16_int8 = {0x99, 0x79, 0x82, 0x5a, 0x99, 0x79, 0x82, 0x5a, 0x99, 0x79, 0x82, 0x5a, 0x99, 0x79, 0x82, 0x5a}, v8_int16 = {0x7999, 0x5a82, 0x7999, 0x5a82, 0x7999, 0x5a82, 0x7999, 0x5a82}, v4_int32 = {0x5a827999, 0x5a827999, 0x5a827999, 0x5a827999}, v2_int64 = {0x5a8279995a827999, 0x5a8279995a827999}, uint128 = 0x5a8279995a8279995a8279995a827999}
xmm11    {v4_float = {0x80000000, 0x80000000, 0x80000000, 0x80000000}, v2_double = {0x8000000000000000, 0x8000000000000000}, v16_int8 = {0x99, 0x79, 0x82, 0x5a, 0x99, 0x79, 0x82, 0x5a, 0x99, 0x79, 0x82, 0x5a, 0x39, 0x7a, 0x82, 0x5a}, v8_int16 = {0x7999, 0x5a82, 0x7999, 0x5a82, 0x7999, 0x5a82, 0x7a39, 0x5a82}, v4_int32 = {0x5a827999, 0x5a827999, 0x5a827999, 0x5a827a39}, v2_int64 = {0x5a8279995a827999, 0x5a827a395a827999}, uint128 = 0x5a827a395a8279995a8279995a827999}
xmm12    {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x3, 0x2, 0x1, 0x0, 0x7, 0x6, 0x5, 0x4, 0xb, 0xa, 0x9, 0x8, 0xf, 0xe, 0xd, 0xc}, v8_int16 = {0x203, 0x1, 0x607, 0x405, 0xa0b, 0x809, 0xe0f, 0xc0d}, v4_int32 = {0x10203, 0x4050607, 0x8090a0b, 0xc0d0e0f}, v2_int64 = {0x405060700010203, 0xc0d0e0f08090a0b}, uint128 = 0x0c0d0e0f08090a0b0405060700010203}
xmm13    {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x8000000000000000}, v16_int8 = {0x6, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x73, 0x74, 0x64, 0x2e, 0x69, 0x6e, 0x74, 0x65}, v8_int16 = {0x1006, 0x0, 0x0, 0x0, 0x7473, 0x2e64, 0x6e69, 0x6574}, v4_int32 = {0x1006, 0x0, 0x2e647473, 0x65746e69}, v2_int64 = {0x1006, 0x65746e692e647473}, uint128 = 0x65746e692e6474730000000000001006}
xmm14    {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
xmm15    {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}
mxcsr    0x1fa0
ymm0h    0x00000000000000000000000000000000
ymm1h    0x00000000000000000000000000000000
ymm2h    0x00000000000000000000000000000000
ymm3h    0x00000000000000000000000000000000
ymm4h    0x00000000000000000000000000000000
ymm5h    0x00000000000000000000000000000000
ymm6h    0x00000000000000000000000000000000
ymm7h    0x00000000000000000000000000000000
ymm8h    0x00000000000000000000000000000000
ymm9h    0x00000000000000000000000000000000
ymm10h   0x00000000000000000000000000000000
ymm11h   0x00000000000000000000000000000000
ymm12h   0x00000000000000000000000000000000
ymm13h   0x00000000000000000000000000000000
ymm14h   0x00000000000000000000000000000000
ymm15h   0x00000000000000000000000000000000
orig_rax 0xffffffffffffffff
al       0x0
bl       0x70
cl       0xc0
dl       0xc0
sil      0x2
dil      0xb8
bpl      0x70
spl      0x60
r8l      0x0
r9l      0xa3
r10l     0x68
r11l     0x20
r12l     0x10
r13l     0xe8
r14l     0x20
r15l     0x1
ah       0x0
bh       0x8f
ch       0x6a
dh       0x6a
ax       0x0
bx       0x8f70
cx       0x6ac0
dx       0x6ac0
si       0x2
di       0x3fb8
bp       0xd570
r8w      0x6a00
r9w      0x3fa3
r10w     0x4768
r11w     0x20
r12w     0x4710
r13w     0xfe8
r14w     0x20
r15w     0x1
eax      0x0
ebx      0x17a8f70
ecx      0xd3a36ac0
edx      0xd3a36ac0
esi      0x2
edi      0xd3a33fb8
ebp      0xffffd570
esp      0xffffd560
r8d      0xd3a36a00
r9d      0x3fa3
r10d     0x1a04768
r11d     0x20
r12d     0x1a04710
r13d     0xfe8
r14d     0x20
r15d     0x1
ymm0     {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}}
ymm1     {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}}
ymm2     {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}}
ymm3     {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}}
ymm4     {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}}
ymm5     {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}}
ymm6     {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}}
ymm7     {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}}
ymm8     {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}}
ymm9     {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x4d, 0x0, 0x0, 0x0, 0x73, 0x0, 0x0, 0x0, 0x67, 0x0, 0x0, 0x0, 0x57, 0x0 <repeats 19 times>}, v16_int16 = {0x4d, 0x0, 0x73, 0x0, 0x67, 0x0, 0x57, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x4d, 0x73, 0x67, 0x57, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x730000004d, 0x5700000067, 0x0, 0x0}, v2_int128 = {0x0000005700000067000000730000004d, 0x00000000000000000000000000000000}}
ymm10    {v8_float = {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x8000000000000000, 0x8000000000000000, 0x0, 0x0}, v32_int8 = {0x99, 0x79, 0x82, 0x5a, 0x99, 0x79, 0x82, 0x5a, 0x99, 0x79, 0x82, 0x5a, 0x99, 0x79, 0x82, 0x5a, 0x0 <repeats 16 times>}, v16_int16 = {0x7999, 0x5a82, 0x7999, 0x5a82, 0x7999, 0x5a82, 0x7999, 0x5a82, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x5a827999, 0x5a827999, 0x5a827999, 0x5a827999, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x5a8279995a827999, 0x5a8279995a827999, 0x0, 0x0}, v2_int128 = {0x5a8279995a8279995a8279995a827999, 0x00000000000000000000000000000000}}
ymm11    {v8_float = {0x80000000, 0x80000000, 0x80000000, 0x80000000, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x8000000000000000, 0x8000000000000000, 0x0, 0x0}, v32_int8 = {0x99, 0x79, 0x82, 0x5a, 0x99, 0x79, 0x82, 0x5a, 0x99, 0x79, 0x82, 0x5a, 0x39, 0x7a, 0x82, 0x5a, 0x0 <repeats 16 times>}, v16_int16 = {0x7999, 0x5a82, 0x7999, 0x5a82, 0x7999, 0x5a82, 0x7a39, 0x5a82, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x5a827999, 0x5a827999, 0x5a827999, 0x5a827a39, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x5a8279995a827999, 0x5a827a395a827999, 0x0, 0x0}, v2_int128 = {0x5a827a395a8279995a8279995a827999, 0x00000000000000000000000000000000}}
ymm12    {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x3, 0x2, 0x1, 0x0, 0x7, 0x6, 0x5, 0x4, 0xb, 0xa, 0x9, 0x8, 0xf, 0xe, 0xd, 0xc, 0x0 <repeats 16 times>}, v16_int16 = {0x203, 0x1, 0x607, 0x405, 0xa0b, 0x809, 0xe0f, 0xc0d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x10203, 0x4050607, 0x8090a0b, 0xc0d0e0f, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x405060700010203, 0xc0d0e0f08090a0b, 0x0, 0x0}, v2_int128 = {0x0c0d0e0f08090a0b0405060700010203, 0x00000000000000000000000000000000}}
ymm13    {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x8000000000000000, 0x0, 0x0}, v32_int8 = {0x6, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x73, 0x74, 0x64, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x0 <repeats 16 times>}, v16_int16 = {0x1006, 0x0, 0x0, 0x0, 0x7473, 0x2e64, 0x6e69, 0x6574, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int32 = {0x1006, 0x0, 0x2e647473, 0x65746e69, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x1006, 0x65746e692e647473, 0x0, 0x0}, v2_int128 = {0x65746e692e6474730000000000001006, 0x00000000000000000000000000000000}}
ymm14    {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}}
ymm15    {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 0x00000000000000000000000000000000}}