Skip to content

Fix mbtime overflow on 32 bit systems - #1978

Merged
zolia merged 1 commit into
masterfrom
fix-mbtime
Apr 1, 2020
Merged

Fix mbtime overflow on 32 bit systems#1978
zolia merged 1 commit into
masterfrom
fix-mbtime

Conversation

@vkuznecovas

@vkuznecovas vkuznecovas commented Apr 1, 2020

Copy link
Copy Markdown
Contributor

The calculations would overflow on 32 bit systems, due to the way CGO works.

Explicit cast to a uint64 before making calculations forces each variable to be casted to 64bits.

Fixes #1942

BEFORE:

{"level":"info","time":"2020-04-01T10:08:37+03:00","message":"Getting nanotime"}
{"level":"info","time":"2020-04-01T10:08:37+03:00","message":"nanotimeRes ts.Sec*1e9=-1269021696, ts.Nsec=%!(EXTRA int32=335610159)"}
now  -933.411537ms
{"level":"info","time":"2020-04-01T10:08:37+03:00","message":"Getting nanotime"}
{"level":"info","time":"2020-04-01T10:08:37+03:00","message":"nanotimeRes ts.Sec*1e9=-1269021696, ts.Nsec=%!(EXTRA int32=335810053)"}
later  -933.211643ms
{"level":"info","time":"2020-04-01T10:08:37+03:00","message":"Subbing: u.ns -933.411537ms"}
{"level":"info","time":"2020-04-01T10:08:37+03:00","message":"Subbing: t.s -933.211643ms"}
{"level":"info","time":"2020-04-01T10:08:37+03:00","message":"Subbing: d 199.894µs"}
sub1  199.894µs

AFTER:

{"level":"info","time":"2020-04-01T10:18:02+03:00","message":"Getting nanotime"}
{"level":"info","time":"2020-04-01T10:18:02+03:00","message":"ts.Sec 1990319 ts.Nsec 894832190"}
{"level":"info","time":"2020-04-01T10:18:02+03:00","message":"nanotimeRes ts.Sec*1e9=1090262528, ts.Nsec=%!(EXTRA int32=894832190)"}
now  552h51m59.89483219s
{"level":"info","time":"2020-04-01T10:18:02+03:00","message":"Getting nanotime"}
{"level":"info","time":"2020-04-01T10:18:02+03:00","message":"ts.Sec 1990319 ts.Nsec 895114689"}
{"level":"info","time":"2020-04-01T10:18:02+03:00","message":"nanotimeRes ts.Sec*1e9=1090262528, ts.Nsec=%!(EXTRA int32=895114689)"}
later  552h51m59.895114689s
{"level":"info","time":"2020-04-01T10:18:02+03:00","message":"Subbing: u.ns 552h51m59.89483219s"}
{"level":"info","time":"2020-04-01T10:18:02+03:00","message":"Subbing: t.s 552h51m59.895114689s"}
{"level":"info","time":"2020-04-01T10:18:02+03:00","message":"Subbing: d 282.499µs"}
sub1  282.499µs

The calculations would overflow on 32 bit systems, due to the way CGO works.

Explicit cast to a uint64 before making calculations forces each variable to be casted to 64bits.

Fixes #1942
@zolia
zolia merged commit dc7d550 into master Apr 1, 2020
@zolia
zolia deleted the fix-mbtime branch April 1, 2020 07:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

payments: time component overflow

4 participants