[Issue 8854] incomprehensible bug on windows with import side effect

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sat Oct 20 04:13:04 PDT 2012


http://d.puremagic.com/issues/show_bug.cgi?id=8854



--- Comment #2 from Maxim Fomin <maxim at maxim-fomin.ru> 2012-10-20 04:12:53 PDT ---
Forgot to mention - I cannot reproduce bug related to naming files and
directories.

Comparing disassembles of testfunc shows that they are same, except __lamda2.

Buggy version (presence of dummy import) boils down to following asm:

0x0000000000419b84 <+0>:    push   %rbp
0x0000000000419b85 <+1>:    mov    %rsp,%rbp
0x0000000000419b88 <+4>:    sub    $0x10,%rsp
0x0000000000419b8c <+8>:    mov    (%rdi),%rax
0x0000000000419b8f <+11>:    leaveq 
0x0000000000419b90 <+12>:    retq 

However, in correct version of program without dummy import asm is:

0x0000000000419c68 <+0>:    push   %rbp
0x0000000000419c69 <+1>:    mov    %rsp,%rbp
0x0000000000419c6c <+4>:    sub    $0x10,%rsp
0x0000000000419c70 <+8>:    mov    -0x30(%rdi),%rax
0x0000000000419c74 <+12>:    leaveq 
0x0000000000419c75 <+13>:    retq  

It seems that importing some code changes size of type.

In everything else assemblies look similar, except in changes of relatives
addresses (binaries are of different sizes.) May be worth mentioning that
running two version shows that differences started at calling opIndex of
MapStruct
(https://github.com/D-Programming-Language/phobos/blob/master/std/algorithm.d#L438).
In buggy version index=42_998_32, in correct version index=42_982_32. Both
function return same value.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list