On 10.02.2015 15:33, Rūdolfs Bundulis wrote:
Hi,

I also wanted to ask are there any known release dates for the next version where the GUI processes will be separated and won't face the hardening issues?
We'll do the announcement when the code is out. If you look at previous releases it's reasonable to extrapolate that there will be a beta/release candidate quite a while before the next major version will be finalized.

Of course we can't stop you from trying out the latest code anyway...
I've seen bugs regarding crashes with multiple CPUs (like https://www.virtualbox.org/ticket/13319 ) being solved in 4.3.20 so I wanted to know if a release of that codebase without the hardening is planned in foreseeable future, that could also address the crashes I'm having. Just a general inquiry.
I thought we answered this question many times already (not in this thread, but elsewhere). There will be no VirtualBox for Windows releases without the hardening. We were forced to do this by a security report (which does have a point), and as this security issue has not that much to do with VirtualBox we can't drop it. It's more an issue with Windows being inherently insecure and we're having to compensate for that by going extremely paranoid.

Klaus

Best Regards,
Rudolfs Bundulis

2015-02-09 12:54 GMT+02:00 Rūdolfs Bundulis <[email protected] <mailto:[email protected]>>:

    Hi Klaus,

    thanks for the response, yeah I suspected that the path was read
    from somewhere, since running regsvr32 to unregister VBoxC.dll
    from installation directory and then registering it from my path
    didn't chagne anything, but I'm happy - it's not an issue to run
    my binaries from the installation folder, the main thing is that
    things seem to be working. Now the only thing I need is to see if
    I can make OpenGL render to a custom FBO so I can live without the
    window and access the OpenGL pixel data, but that is my issue, if
    I come up with anything interesting maybe that can be use fro you
    too. At least as far as I understand right now, due to the need of
    a window on the host, VBoxHeadless.exe does not provide any 3D
    acceleration support right?

    Sorry to bother you so much, but the issue I'm more troubled by is
    the crash I get - I've already described it before but I have made
    little progress. Basically what happens is whenever I start my VM
    with my custom frontend with more than 1 CPU it crashes on Windows
    startup (longjmp_internal from Microsoft C runtime fails with
    unaligned stack, the last stack entry I saw from VBoxREM.dll was
    cpu_exit_loop or smth) - since VBoxREM.dll is built with MinGW
    visual studio does not help a lot, and when running under debug
    version under MinGW I also was unable to obtain any valuable info.
    With 1 CPU it always works fine. I've tried CRT debug heap,
    Application Verifier etc. to find potential issues with my code
    (since the default Qt frontend does not crash with the same
    configuration) I blame my part of the code, but still maybe there
    are some peculiarities with the COM interface. Do you know any
    bugs that have reported similar issues to what I'm seeing? Or
    maybe you can give any pointers since currently I'm kind of stuck.

    Again, great thanks for the support, my research would have hit
    dead end without your help, yesterday I finally finished splitting
    so thanks to VirtualBox I am able to run a single virtual
    9600x5400 display on VirtualBox (what is weird, even with WDDM
    drivers) and split/encode it to 25 displays, basically this cannot
    be done with hardware (well in terms of a single homogeneous
    display) so I'm very happy.

    Best Regards,
    Rudolfs Bundulis

    2015-02-09 12:21 GMT+02:00 Klaus Espenlaub
    <[email protected] <mailto:[email protected]>>:

        Rūdolfs,

        On 09.02.2015 10:28, Rūdolfs Bundulis wrote:
        Hi,

        yeah it turned out that when running from the VirtualBox
        installation path 3D support works for my frontend, seems
        that it comes from the fact that the COM API is using the
        dll's  from the installation folder. I'm just gonna leave
        this information here in case anyone else stumbles on the
        same issue.
        VBoxC.dll contains "in-process" COM components (which live in
        the "API client" process), and the path to it is kept in the
        registry. Normal COM stuff.

        2015-02-07 18:37 GMT+02:00 Rūdolfs Bundulis
        <[email protected] <mailto:[email protected]>>:

            Hi,

            again thanks for all the previous help, I managed to
            build VBox with the LogRel() but when I copied the dll's
            over the installation i got a ton of errors about invalid
            image hashes (I guess that just copying over is not the
            way to go). Anyhow, I came up with a different approach
            and made a small frontend that would basically do the
            same stuff as my app but also draw the output to a
            window. When I launch the application from the VirtualBox
            installation folder everything works fine - 3D support
            works, when I take the app and all the virtualbox
            binaries and put them in a random folder, it again stops
            working. And what is interresting that using Process
            Explorer I was able to see that actually two copies of
            VBoxC.dll are loaded (one from the installation folder
            and one from my folder) and one VBoxRT.dll (only from the
            VirtualBox installation folder). I assume the ones from
            the installation folder are loaded by the COM object? Is
            this a very very bad practice to try and deploy the
            VirtualBox binaries outside the installation path?

        The invalid image hashes most likely mean that VirtualBox
        isn't accepting the signature in your binaries. It only
        accepts the "one signer" of everything, so if you mix Oracle
        and your own build then it won't work very well.

        Deploying VirtualBox binaries outside the installation path
        isn't exactly forbidden, but we don't test it right now. This
        will stay for a while, we have still way too much noise on the
        hardening related tickets.

        Klaus


            2015-01-26 15:25 GMT+02:00 Rūdolfs Bundulis
            <[email protected]
            <mailto:[email protected]>>:

                Hi Vitali,

                this was what I was looking for, much appreciated :)

                Best Regards,
                Rudolfs Bundulis

                2015-01-26 14:59 GMT+02:00 Vadim Galitsyn
                <[email protected]
                <mailto:[email protected]>>:

                    Hi Rudolfs,

                    you could add LogRel() messages and they should
                    appear in release log (VBox.log file) once VBox
                    has been built w/ corresponding flag. Note, that
                    this only works for guest R0 code (miniport).
                    Adding LogRel() to R3 code (display driver) will
                    not result in extra messages in log.

                    Please consider to add VBOX_WITH_R0_LOGGING=1
                    into LocalConfig.kmk in order to enable LogRel()’s.

                    Vadim

                    On 26 Jan 2015, at 15:26, Rūdolfs Bundulis
                    <[email protected]
                    <mailto:[email protected]>> wrote:

                    Hi Vadim,

                    ok clear, thanks for the info. We'll so far I
                    haven't patched anything in the VBox code
                    itself, as I said I have a custom frontend. Does
                    that code help you in any way? I'll make a debug
                    build and look for more messages and mail back
                    if it gives any additional info, thanks for all
                    the help so far. The main thing I wanted to
                    understand was is there any way to see the
                    output from the WARN macros in the miniport
                    driver, and as far as I understand there is none.

                    Best Regards,
                    Rudolfs Bundulis

                    2015-01-26 13:42 GMT+02:00 Vadim Galitsyn
                    <[email protected]
                    <mailto:[email protected]>>:

                        Hi Rudolfs,

                        Debug build of VBox itself would probably
                        add a bit more messages to VBox.log (and to
                        debug log as well), but this definitely will
                        not prevent the fact that debug version of
                        GAs cause BSOD. Is it possible if you share
                        a patch to OSE tree with your changes, so I
                        could take a look at it later this week (or
                        another)?

                        Vadim

                        On 26 Jan 2015, at 14:00, Rūdolfs Bundulis
                        <[email protected]
                        <mailto:[email protected]>> wrote:

                        Hi Vadim,

                        Well since I also came to the the
                        conclusion that the WinId could cause this,
                        I tried making a dummy window for each of
                        the IFramebuffer instances, but nothing
                        changed. Though the windows do not have any
                        logic in the message loop, and I do not
                        resize them when the resolutions change -
                        maybe this causes some errors. That is why
                        I asked if any logs from the miniport
                        driver is available to see where does it
                        actually crash. If I make a debug
                        VirtualBox build then would debug GAs work?

                        Best Regards,
                        Rudolfs Bundulis

                        2015-01-26 12:50 GMT+02:00 Vadim Galitsyn
                        <[email protected]
                        <mailto:[email protected]>>:

                            Hi Rudolfs,

                            As far as I can understand, returning
                            NULL WinID might cause the behaviour
                            you are observing on Windows host
                            (please note, I have not tried that
                            locally, take it like a gesture).
                            Seems, you also already have 3D host
                            service running. Can you try to provide
                            valid WinID to Main/src-client stuff as
                            an experiment and see if things changed?

                            Regarding to GAs, I am afraid you’ll
                            have a BSOD in guest once you attempt
                            to boot VM with debug GAs installed. We
                            currently have some debug R0 assertion
                            there.

                            Vadim

                            On 26 Jan 2015, at 13:12, Rūdolfs
                            Bundulis <[email protected]
                            <mailto:[email protected]>>
                            wrote:

                            Hi Vadim,

                            thanks for the pointers, I'll look up
                            the code, I was already afraid that
                            something is simply missing.

                            To describe what I am doing:
                            I am running a research project in
                            University of Latvia where we are
                            trying to use VirtualBox for large
                            scale high resolution display wall
                            construction - basically we run
                            VirtualBox with a custom frontend that
                            takes the video data from the VRAM,
                            encodes it and streams over to a
                            display wall, currently we've been
                            able to run a 9600x5400 surface with
                            Windows XPDM (we set this resolution
                            as a hint and then internally split it
                            to  5*5 1920x1080 displays) , which is
                            really impressive, so thanks again for
                            the great software. In terms of
                            resolution I guess this is as far as
                            the existing 256MB VRAM limit in
                            VirtualBox can go (at least according
                            to the calculations for framebuffer
                            needs provided by Klaus Erspenlaub and
                            mentioned in your code). Since the
                            resolution limit is reached we are
                            trying to address two more issues - 3D
                            support and a weird unaligned stack
                            crash in VBoxREM.dll with more than 1
                            CPU shared to the machine (for the
                            second issue I need to do some more
                            research as to where it is coming from
                            before I ask any help here). As for
                            the 3D - we'd basically want our
                            software to function in the same way
                            the VirtualBox QT client does, but
                            currently it does not. Thanks for the
                            pointer about the HGCM/OpenGL service,
                            I'll check out that code and see what
                            I can adapt.

                            Our software basically uses the
                            VirtualBox COM interface to create the
                            needed machine, set the number of
                            displays/resolutions, injects the
                            IFramebuffer instances and powers up
                            the machine via the IConsole
                            interface. So I examined all the
                            IFramebuffer implementations in
                            VirtualBox frontends, and didn't see
                            anything very special in the 3D
                            related callbacks there. As for the
                            log - I tried to compare the log of a
                            session from our software with a
                            session from the same machine under QT
                            fronted where the 3D acceleration
                            works. Basically there were no errors
                            and differences, in both cases the
                            logs contained the lines about OpenGL
                            support (i guess this comes from the
                            OpenGL capability test exe), I'll send
                            both logs as soon as I get back to
                            that machine but I doubt they'll give
                            much help, since they don't have any
                            errors, and in both of them the guest
                            additions log line states that
                            acceleration is supported. Basically
                            the only thing that differs is that
                            the D3D/OpenGL (we've tried both
                            API's, since the test application is
                            built on Unity it is trivial to force
                            either mode) device creation fails on
                            our frontend. That is why I asked
                            about the get_WinId, I examined the
                            miniport driver code and as far as I
                            understood it uses the window id value
                            to create a swap chain. Out frontend
                            does not have an actual window, so I
                            am always returning NULL, can this
                            cause an error? I also saw that the
                            miniport driver has a lot of WARN
                            macros, is  the output visible
                            anywhere? I tried using DebugView but
                            that didn't help? Should I try
                            building a debug version of guest
                            additions to get some log information?

                            Best Regards,
                            Rudolfs Bundulis

                            2015-01-26 10:34 GMT+02:00 Vadim
                            Galitsyn <[email protected]
                            <mailto:[email protected]>>:

                                Hi Rudolfs,

                                In order to provide 3D
                                acceleration, VBox HGCM/OpenGL
                                host service should be running. It
                                is currently a part of
                                VirtualBoxVM process (ShCrOpenGL
                                thread). In order to provide 3D
                                acceleration support for your
                                frontend, I am afraid, you need to
                                adapt stuff from this thread for
                                your code. And I am afraid this
                                might be not that easy (there is a
                                bit of magic when VBox GUI
                                conversates w/ 3D stuff). Please
                                refer to
                                src/VBox/HostServices/SharedOpenGL
                                and src/VBox/GuestHost/OpenGL sources.

                                Btw, if you describe a little bit
                                more why do you need this and what
                                you already have done, maybe I
                                could explain you more
                                things/steps you need to do in
                                order to reach the goal. VBox.log
                                also might be helpful.

                                Vadim


                                > On 24 Jan 2015, at 14:14,
                                Rūdolfs Bundulis
                                <[email protected]
                                <mailto:[email protected]>>
                                wrote:
                                >
                                > Hi,
                                >
                                > I'm having a bit of a hard time
                                understanding why my custom
                                framebuffer cannot use the 3D
                                acceleration feature. I have a
                                Windows 7 guest machine (3D
                                acceleration enabled, guest
                                additions installed) and a Unity
                                demo application. Under the
                                default QT GUI the application
                                launches fine, while under my
                                frontend Unity is not able to
                                create the D3D device. First I
                                though that this could be due to
                                incorrect implementation of
                                IFramebuffer, but when I looked at
                                UIFrameBuffer::Notify3DEvent(ULONG
                                uType, BYTE *pData) in
                                UIFrameBuffer.cpp there wasn't any
                                special magic there. Are there any
                                hints to guide me towards
                                understanding the cause of this?
                                Is there any tracing facilities
                                for the guest miniport driver?
                                Also, I don't have a window handle
                                for my frontend since there is no
                                actual window. If I am returning 0
                                in get_WinId in my framebuffer can
                                that mess things up?
                                >
                                > Best Regards,
                                > Rudolfs Bundulis

_______________________________________________
vbox-dev mailing list
[email protected]
https://www.virtualbox.org/mailman/listinfo/vbox-dev

Reply via email to