Jump to page: 1 2
Thread overview
[Issue 12800] Fibers are broken on Win64
May 25, 2014
Johannes Blume
Jun 10, 2014
Sönke Ludwig
Sep 22, 2014
Sönke Ludwig
Sep 22, 2014
Sönke Ludwig
Nov 07, 2014
Martin Nowak
Nov 10, 2014
Martin Nowak
May 25, 2014
https://issues.dlang.org/show_bug.cgi?id=12800

Johannes Blume <jblume@jblume.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jblume@jblume.com

--- Comment #1 from Johannes Blume <jblume@jblume.com> ---
This should be fixed by https://github.com/D-Programming-Language/druntime/pull/809 .

I didn't fix the related bug yet because the obvious solution of pushing all the floating-point registers on the stack more than doubles the cost of a context switch.

--
May 25, 2014
https://issues.dlang.org/show_bug.cgi?id=12800

--- Comment #2 from github-bugzilla@puremagic.com ---
Commits pushed to master at https://github.com/D-Programming-Language/druntime

https://github.com/D-Programming-Language/druntime/commit/02f4267adc9ab60a61aacc0aae4def9499c626ad fix Issue 12800 - Fibers are broken on Win64

Win64 version of the context switch used the wrong registers for parameters

https://github.com/D-Programming-Language/druntime/commit/591b8d474c94161c749ee1800876e7f65ca0e634 Merge pull request #809 from jblume/master

fix Issue 12800 - Fibers are broken on Win64

--
May 25, 2014
https://issues.dlang.org/show_bug.cgi?id=12800

github-bugzilla@puremagic.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--
June 10, 2014
https://issues.dlang.org/show_bug.cgi?id=12800

--- Comment #3 from Sönke Ludwig <sludwig@outerproduct.org> ---
It looks like there is still something wrong. The unit test for the FiberScheduler of the new std.concurrency additions crashes with an access violation inside Fiber.call().

https://github.com/D-Programming-Language/phobos/pull/1910

I didn't have a chance to investigate this deeper, yet. Reopening for now.

--
September 22, 2014
https://issues.dlang.org/show_bug.cgi?id=12800

Sönke Ludwig <sludwig@outerproduct.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|FIXED                       |---

--- Comment #4 from Sönke Ludwig <sludwig@outerproduct.org> ---
A simple vibe.d application also crashes here because RAX is null:
---
00007FF7F0FA2E07  call        fiber_switchContext (07FF7F0FC6790h) 00007FF7F0FA2E0C  add         rsp,20h 00007FF7F0FA2E10  mov         rax,qword ptr [rsi+80h] 00007FF7F0FA2E17  mov         rbx,qword ptr [rax+10h]  <- RAX==0
---

This was the first `Fiber.call()` call of the program.

--
September 22, 2014
https://issues.dlang.org/show_bug.cgi?id=12800

--- Comment #5 from Sönke Ludwig <sludwig@outerproduct.org> ---
Correction: It's the first call to yield() that crashes.

---
import core.thread, std.stdio;
void fun() { writeln("A"); Fiber.yield(); writeln("B"); }
void main() {
    auto f = new Fiber(&fun);
    writeln("call..");
    f.call(false);
    writeln("call again..");
    f.call(false);
    writeln("exit");
}
---

Output:
call..
A
(crash)

--
November 07, 2014
https://issues.dlang.org/show_bug.cgi?id=12800

Martin Nowak <code@dawg.eu> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |code@dawg.eu

--- Comment #6 from Martin Nowak <code@dawg.eu> ---
Looks like we're missing to save RSI and RDI.
All the callee saved registers need to be stored on the fiber stack.
http://msdn.microsoft.com/en-us/library/6t169e9c.aspx

--
November 10, 2014
https://issues.dlang.org/show_bug.cgi?id=12800

Martin Nowak <code@dawg.eu> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |pull

--- Comment #7 from Martin Nowak <code@dawg.eu> ---
https://github.com/D-Programming-Language/druntime/pull/1012

--
November 10, 2014
https://issues.dlang.org/show_bug.cgi?id=12800

github-bugzilla@puremagic.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |RESOLVED
         Resolution|---                         |FIXED

--
November 10, 2014
https://issues.dlang.org/show_bug.cgi?id=12800

--- Comment #8 from github-bugzilla@puremagic.com ---
Commits pushed to master at https://github.com/D-Programming-Language/druntime

https://github.com/D-Programming-Language/druntime/commit/fc887f3a41f850c266812b56a4cd770acef7b044 fix Issue 12800 - Fibers are broken on Win64

- save non-volatile registers RSI and RDI

https://github.com/D-Programming-Language/druntime/commit/d30668171d145d9c31f47e47717d0787845ff58f Merge pull request #1012 from MartinNowak/fix12800

fix Issue 12800 - Fibers are broken on Win64

--
« First   ‹ Prev
1 2