HISE Logo Forum
    • Categories
    • Register
    • Login

    HISE crashes when manipulating table data objects

    Scheduled Pinned Locked Moved Bug Reports
    8 Posts 3 Posters 715 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • jonhallurJ
      jonhallur
      last edited by

      I encountered a crash when manipulating table data objects. I'm using Table.getTablePointsAsArray and Table.setTablePointsFromArray functions to mirror (and manipulate data, not used in this example as the crash happens without it) data from one table to another.

      I'm doing this from the Table.setContentCallback since I want this to happen when I "add, remove or change" a point in the table.

      The crash does not happen instantly, but pretty reliably when using the right-click mouse button to change the curve value of the adjacent table point. (I'm pretty sure I have experienced a crash with a left-click and move on a point in the table, but very sure about the right-click.)

      The crash happens more often/faster in a compiled plugin running in a DAW.

      These crashes are happening on the develop branch and have not been tested on master.

      To recreate the crash one should only have to play around with the table for a few minutes, and be liberal with moving the mouse all over the place while holding in the right-click button on the table to change the curve value.

      A side note, when using the script node example, when running the table using a clock ramp, the setContentCallback is called repeatedly without changing any points in the table.

      ScriptNode example

      HiseSnippet 1583.3ocuX01SabDDdOCaRsaPpos46mxGhLpTGbdgRTTSwXfDqV.qXGZT+BZ4t01q37tW2aMfSUj5Os9Sp+CRmY2y9tCrID2zZjPd24smc1YlmEZqUA7jDkl3Ut63XNw6NzNiklAMGvDRRqcHd2iZXmDwONPyRFbL+B1v3HNY6wwrjDdHwyaoWhp5UdYh8ye+SayhXx.d1VDxQJQ.+WDCElrcau0OKhh1iEx6JFlS6mrUq.kroJRMBf0Rz0IwrfSY84GvP0JQId2Z2PgQo6XXFdBwa4sUgi6LPctzo+QhDA.YbQcRGvQts2SEEhHF2kzbfHJr8jieBA7R6rjwRtjw2R2WDJlteVR4qrB7yrHe9vqTQ3sTA3UOO7VOG7lAj7xAIpCR2k1IPKhMYRP77Mo6lgn5EfzAiF1EuEAzP89RHI6TmT5CknMURCWZpMjcJeOMrnErV2iEvqtw5qulO7qUetekJvkRhw+Ll12Y7dust+O5aqVp0mar9eZ3qd+T.AZc+UedNi6OPkXN1VSAlOI3fCZpFFqjvhp2OmNEM1UJFxLLv1ck8ERds.MGxyMjgul2Wj.P2hjc.cpVGPdkJngIVzHUg7ogd5oXJ5qhpmK10z7df6TVekEZzmUd3C8+0AbYNG6KR7CFvPP022LfC.NZD2W0ytvE0yDL+fHUvo9ZnOBcBJKvkD7CXQQm.059mCMF9m3DHjiTiRhFaWCJvCqUwuxkOO0RvDn0MMS8R0dijAFgRVcU++nRYLKvzZ3feEamd6oDRSRijFZMabU3XVVzqJZyCd.ZZsHtruYf+K7quZkxkyRHXvy4.nHZnyEfQfWd+pOeBT7UxCTF9g.lp.Xpx6q3eYQ85MSY3gSqfiudlhwQH5qyvpxQCOgqWycqLUQnsuXyJc9Mq4mkjdkkSQkrkTXNLlKm2DFR5EDzXWJEUP3M115URafsoQh.ZZ+Z5kumHVnmerJl7IdOk93MpU7yYGd34Gb9yZ2+2e4lMabzSd2gvl89NTzyDA.pOzglqGBqPy0L7YN5uoE1Ugy3RyJPlJlqMB7RvaG9Y.ggahWY5N7jSMpXaZKcFAw61eBItKxf8K1ZbdplyEglAS2Xq+bqAbQ+A4XoDaEO4JrUnkdb5bMLE9wgSwj3bPxVweTj7W82x5hVxP9E3X7JVRzLBhkcoKfZRENJhYJxWgjzoBf9hBjC37dYhvLNOI9mMRraJDuKssvDLX1XrzLvH1F8e.FSo9Wgtaud7.SF.Wlt2a++imuBcB+jM3Ep6lKytWNl8eyi5mi3TyjIwJs4ULYHLD8xzmcujbb5+ULBmyuqDi1K0hvpF8H9Z9aNOMgWFD.2l7pWQXaKu5tW.b0RVzrs2vztGh.ZzDYLsjyYC1i07Xll2U0NBHZRruJ80vAYM+SPs6HdG+prAosxaa8GxUK4QIKBowstw270u9BuWqFAL782mYzBrqFtN6.u6Mf2LEc30ZIj6vsdcbMV62gKCsK9.7IUX8o0.fv5SDlQ6PNfaNWoO0Vxk9c3rf0Wqj+U9ji35DrCz61z0qA+PZDEoNGm1IR6MgJO6dsUQiiGnjh.bKmFSvdigpQ3nQ2A3UrjtLQD1LCAGpK.A6wBfr331Lbx2coHoJzsAW+AS65JBrrJeLehdYxemfKq..XncbL9WIrDJGOqkRCmqQx99qiw2eQtR70P+Pl3OonsLd3i3WLgVaGQRLTZt8HXLhqIuvNv5zI4KS+dfJoMCBI23TkNcE788ExibTuT71frO6hz02hVeSXiNFdLVuiJTGViGyaS6xAtIRAKIyys0ura2XNt8Nz8GEYDwQBvGELmbyfrS4Y45UnMBC6p5H5Cc72PbeS88cnuIFdsBGGGsfv9Qyw0UnsjPUj3L9kwb16YHjLVstLM7babubEkqPCrE4t2HTnp7d1tBXVTs7p7upxLkuXx2xpDsynJTH5kK8rzGKy6p6ba8wO94iSAssrg3Jfquj61qUxQnzfrBCXjxh7Bx+Wl2NjEnUGmdsgGnuvtCjAk1+CFko6iq8qO4I0tz4PQn33ffICDlsMOZAr4wKfMOYAr4oKfMar.17CKfMads1f+ybZLxnF5H2fMZuqs3xyy8dG6SsH+CrpkhQO
      

      Example with no script node, just table data.

      HiseSnippet 1759.3ocuX8+aaTCE2Wa8FMrhX7keAjPmlPSYrQZxFqLDBnsosPDzsrkrxWjPUt24jX5E6S9bZa.M9af+r3OG9O.dO66xcWZRoMLVpTUr86Ke7687yebZqUA7jDkl3sZ2wwbh2MncFKMCZNfIjjV6P7depTIOLIPKhMG16rCMrih3GFnYICHaONlkjvCIddK+0nBdqtBw94u9psYQLY.OeJB4.kHf+chgBS9rs27aEQQ6wB4cECKH8mrYq.kroJRMB.2xz5jXVvwr97GyPwVhR7t1tgBiR2wvL7Dh2JaqBG2Yf5ToS9CDIB.p3fFjNfgbSumJJDQLNKo4.QTX6rfPBArR67PxxtPx6P2WDJlLedn4MsK3mqQw3g2Rkg2xkfWihvqdA3MCH4U.RTGjtIsiMgjuBhm2Nc1bD0nDjd7ngcwrGfFp2qCAYm3jk94UnMURCWZpMjcLeOMLnELV2iEvqtQ852y+Q0qemO2uRk0WGRKIF+SXZem568CM7+BeaUSs9bi0CS.P0akBIPpacmOuRkbs6OPkXbkSf9Y9GrPS0vXkDFT8VEjA0NWYWU3oByfCCYF1bMvTxU1HwLMHTlA1U1WH40BzbHgskL7Y79hDHFX2P6.xT8gy.BWZkaTG29quNpp6zjTExmr+mDKmDCqhJTH.TSy6AFTYsVtyAglZSVRvB6Qz+EFVKAiT1fVSVTzQvwqp8FICLBkr5c7+sJqhPko0.5Jp1jbrRHMIakrkVyFWEL9phdUQwu8sQspEwk8MC7+R+F2oxpqlCXzuEL.TrMzYBPIvJuvEl7+9AbYg.kuHwOX.CCy88MC3PJHZD2W0yNvEEOQv7ChTAG6qYCiQifqE31i9AoaR+SgFN9G4VPHGoFkDM1NFDfGVqx5ejekoyPWkf04z8UQD6iVOCN9J4iUF9S.bUAvUkWTwe5k50alqgaPsBBB5YtL1fVeQJVUNZ3Qb88b4lIBBMUK2JjN+VgE6Tml3JHnR1RJLOIlKmW+aRZRBZatbJp.2arMMWKs8nMTRDPKw2hNcthXgdwKsvD.w6gzGrQsxeN4IO3gO842U9iQ+3FMsig+06t3RelarCMWLDViV3H9Ux6a7z9i+reY6uezmt3d+lzo5c7RFAOuE1DBuCKMu.4pXt1Hvx.uc3m.DBb2nsJcGdxwFULbu9j92DuqeERcmkC6vMGWjJwohPy.7Ru+viPFvE8GXvQ+IrXbVwSqvYeAJ4xflxYw4.jMiy.R1pi2LCLYyH1zZhVxP9YHDqPHWNDb9L47BG+9UGEzKFEeG6HdjEEuQwYZTDBe3bxHmQJlQdGXjgeF782i9b4Hf2RZ2Te6c.tv6UGI2uHR1YloDpWXIj7ASPBX6H1IKtyev7bddlX9N+Mn6yPdDYdu.UvUbGb.RnpvQQLSYloHc7zEfdzknAhL6jIBy3hz0eoQW8xBwaRaKLAClMFWZFXD5h7+AFSI4uFc2d83Alb.tBcue3UGi9JzLFfVmeCZNu44yg2q.G9exi5WfbplIShUZy2vjgvE5SSQs6TqirQNmRHuickn29ZsHrpQOhCODXdRBu.H.xl7pmaw1VBo6dFTGKYQyVeCS6dxAHQSjCmk9aNIiXMGIg1U0NBH9j.76h3OC1H2y+HT5NhekedlIoM221ZOj8njGkrHDXt1kNy23hK7dlZDv4r+9LiVfsVgzYG3EtA7lonCSqKgcaciqiiwZ+NbYncveCeRWrwjZ.XwFYKlSAh7Xt4Tk9XaIW52g8BVesFs363OfqSvSfdWmVuF7GYqnH0oXmNQ5YSnxyNWaUz33AJoH.mxIQF12ZnZjzjsA9FVRWlHBOLCNGpKfE1iE.QwwsYXSuaRQBdvoMH8GL4TWYfkW4iwSzJY+h.tnB.fg1Vw3uGvx353dcoT24NHYeQvg3KBHmy+Z37P9xWIusBt4i3mkQvYGQRLTZt8HnMh6PdoYfwoWmtB8iAVEsYfK4FmnzIifuuuPdfiDFEyFj8YmkN9ZzFOBlnigGi06n.Mfw3175ztb3dIRIMIyyrMl1raLGydC59ihLh3HAXiRpStbP1I7rL8ZzsBC6p5H5Cm3uj39xZ6aPedLvAhisiVPXe+4X5JzVRnJRbBeZLmyrkPxuUqKSCO+CmqPQ4Zz.aQt6R8RUkuq8TAzKpVQQ9OUYldeQ12xqDs8nJUH5UH7r7+Vj2U24l5ee6WzOkj1daHNBtqeIW1qUxA3pA4EFPKkE4sDuR52NjEnUGll1vMzqYmAhfR6uU4p.GNXreirGW4BmCEghCCBxZHLact+BnyCV.c9jEPmGt.5rwBnymt.57nKTG7mscqQF0P2kavDs20Vb44436XoZQ9GG6xcnC
      
      1 Reply Last reply Reply Quote 1
      • d.healeyD
        d.healey
        last edited by

        Why don't you use tableData objects for linking tables?

        Libre Wave - Freedom respecting instruments and effects
        My Patreon - HISE tutorials
        YouTube Channel - Public HISE tutorials

        jonhallurJ 1 Reply Last reply Reply Quote 0
        • jonhallurJ
          jonhallur @d.healey
          last edited by jonhallur

          @d-healey would that allow me to have one as a manipulated version of the other ? (I dont want a mirror, more a transform function. I just omitted that from my example since that is not important for the crash repro)

          d.healeyD 1 Reply Last reply Reply Quote 0
          • d.healeyD
            d.healey @jonhallur
            last edited by

            @jonhallur No it would be a mirror.

            Libre Wave - Freedom respecting instruments and effects
            My Patreon - HISE tutorials
            YouTube Channel - Public HISE tutorials

            1 Reply Last reply Reply Quote 0
            • jonhallurJ
              jonhallur
              last edited by

              When running HISE in debug I will not get a hard crash, but I will get failed jassert frequently, both when settings the Table.setContentCallback() on each compile and often in Table.getTablePointsAsArray(), but the assert makes no sense, as the data looks right.

              5432745a-886b-47e1-bb7b-a536887ba5af-image.png

              Christoph HartC 1 Reply Last reply Reply Quote 0
              • Christoph HartC
                Christoph Hart @jonhallur
                last edited by

                @jonhallur Yes I could also reproduce it in the Debug mode.

                At the moment there are no thread safety measures for the internal graph point array (I think when I wrote that logic, every operation was happening on the UI thread).

                I've added a read-write lock for accessing / writing the graph points and also fixed the problem that a display index event caused a content change callback (that was indeed a logic error in the script wrapper).

                I've committed a fix for both issues, please let me know if the problem persists.

                jonhallurJ 2 Replies Last reply Reply Quote 3
                • jonhallurJ
                  jonhallur @Christoph Hart
                  last edited by

                  @Christoph-Hart Excellent

                  1 Reply Last reply Reply Quote 0
                  • jonhallurJ
                    jonhallur @Christoph Hart
                    last edited by

                    @Christoph-Hart This completely eliminates the jasserts in Debug and I can no longer get HISE to crash in Release.

                    I really appreciate the fast response.

                    Thank you.

                    1 Reply Last reply Reply Quote 3
                    • First post
                      Last post

                    50

                    Online

                    1.7k

                    Users

                    11.7k

                    Topics

                    102.1k

                    Posts