HISE Logo Forum
    • Categories
    • Register
    • Login

    HTTP calls crashing HISE

    Scheduled Pinned Locked Moved Bug Reports
    13 Posts 5 Posters 436 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.
    • A
      aaronventure
      last edited by

      Im working on some tools and am trying to hook up HISE to continuously communicate with a server. I have a about 5 timers ranging from 1 to 10 seconds making POST and GET calls.

      I'm on macOS. HISE will randomly crash while doing this. It is completely random, and I cannot pin it down. Sometimes it crashes within seconds of loading the projects (the timers start automatically) and sometimes it stays up for a few dozen minutes. As I introduced more timers, the crashing became more frequent.

      How would I even debug this? Is there log for this somewhere?

      clevername27C 1 Reply Last reply Reply Quote 0
      • Dan KorneffD
        Dan Korneff
        last edited by

        If it's crashing HISE you'll need to build the debug version of HISE, run it from Xcode/VS and then load your project. When it crashes, it should pinpoint the line of code that failed.

        Dan Korneff - Producer / Mixer / Audio Nerd

        A 1 Reply Last reply Reply Quote 1
        • A
          aaronventure @Dan Korneff
          last edited by

          @Dan-Korneff do I just open the .xcodeproj file and try to run it there?

          1 Reply Last reply Reply Quote 0
          • A
            aaronventure
            last edited by

            Thanks,

            I have no idea what to look for. So here's everything that's red haha.

            7616bfb1-e0f7-4a65-804b-1f3c6747996a-image.png

            d149781e-879c-4c90-844d-f83335dac39c-image.png

            d4075f3d-5270-44d3-a434-14e516e996f5-image.png

            f7460a8b-012e-4459-bdd1-cf31eb8f61a2-image.png

            084a2d34-a3be-4df5-8394-c0a08ea42c6b-image.png

            565801eb-2ea9-4538-8347-97f46090e3cb-image.png

            Dan KorneffD 1 Reply Last reply Reply Quote 0
            • Dan KorneffD
              Dan Korneff @aaronventure
              last edited by

              @aaronventure the only thing I can see is that the connection is being refused, and maybe a crash occurs if that isn't handled. What does the Server Controller show when this is happening?

              Dan Korneff - Producer / Mixer / Audio Nerd

              1 Reply Last reply Reply Quote 0
              • clevername27C
                clevername27 @aaronventure
                last edited by

                @aaronventure I wish I could help, man. I can offer this - HISE doesn't always check to see if you've made a mistake in an API call or such. This makes sense, because every such check slows down HISE. Plus, it takes lots of time to implement all that stuff. Almost every crash I've had was because I made such a mistake.

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

                  Are you building a ddos generator? 😁

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

                  1 Reply Last reply Reply Quote 0
                  • A
                    aaronventure
                    last edited by

                    The weird thing is that it all works. Maybe I'm calling too often but it works as expected in HISE

                    @d-healey haha isn't rate limiting a single ip a thing from 20 years ago?

                    Hey can you check this pdf real quick.

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

                      @aaronventure the debugger locations hint at some race condition between variables being used on the server thread after they have been destroyed by the script (eg references to local JSON objects). Can you dumb that down to an example that crashes more or less reliably?

                      A 1 Reply Last reply Reply Quote 0
                      • A
                        aaronventure @Christoph Hart
                        last edited by

                        @Christoph-Hart I can't get it to reliably crash, sometimes it's in 5 seconds, other times it's 5 minutes. There's no branching beyond if (status == 200).

                        I do have inline functions which then store server call methods. Should I not be interacting with the locals created in these inline functions?

                        Is the lifetime of the inline function in this case just until it fires the method or until the actual response from the server comes back?

                        A 1 Reply Last reply Reply Quote 0
                        • A
                          aaronventure @aaronventure
                          last edited by

                          @aaronventure alright I dropped all arguments from inline functions, made them into standard functions and removed any local/var from the functions: they now just call the server method and the function for the server method is written right in it (it's not defined outside of the server method and then passed)

                          Still crashing. Server Controller showing all green.

                          I'm calling localhost on 5000 if that matters anything.

                          1 Reply Last reply Reply Quote 0
                          • A
                            aaronventure
                            last edited by

                            I'm able to work around this by using runProcess to call curl and send out HTTP calls that way. That also gives me access to the DELETE and PUT calls as well.

                            Is there any reason why this would be a bad idea? macOS has had curl since 2001 and Windows has had curl since 2019. I guess that would be the only downside, i.e. I'd have to ship curl for older versions of windows along with the app.

                            A 1 Reply Last reply Reply Quote 0
                            • A
                              aaronventure @aaronventure
                              last edited by aaronventure

                              @Christoph-Hart so apparently the curl processes are causing crashes now, too. Worth mentioning i'm on macOS. Are the macOS crash logs of any worth to you?

                              Thread 18 Crashed:: Get Pos Data
                              0   libsystem_kernel.dylib        	       0x1894eba38 __close_nocancel + 8
                              1   libsystem_c.dylib             	       0x1893df120 fclose + 144
                              2   HISE                          	       0x10540f1d8 hise::ScriptingObjects::ScriptBackgroundTask::run() + 1920
                              3   HISE                          	       0x1061fe2e4 juce::threadEntryProc(void*) + 284
                              4   libsystem_pthread.dylib       	       0x18952af94 _pthread_start + 136
                              5   libsystem_pthread.dylib       	       0x189525d34 thread_start + 8
                              
                              Thread 18 crashed with ARM Thread State (64-bit):
                                  x0: 0x0000000000000001   x1: 0x0000000000000000   x2: 0x0000000000000000   x3: 0x0000600001bdad40
                                  x4: 0x0000000002000004   x5: 0x0000000000000019   x6: 0x0000000000000000   x7: 0x00000001894e3ad4
                                  x8: 0x00000001893df1a8   x9: 0x00000001f136f2d0  x10: 0x00000001f136c7c0  x11: 0x000000000023c7c7
                                 x12: 0x0000000000000001  x13: 0x0000000000000000  x14: 0x0000000000000002  x15: 0x00000000000000b5
                                 x16: 0x000000000000018f  x17: 0x00000001fb719a90  x18: 0x0000000000000000  x19: 0x0000000000000000
                                 x20: 0x00000001f136d538  x21: 0x0000000000000000  x22: 0x00000000ffffffff  x23: 0x000000016c946f08
                                 x24: 0x0000000106a6b000  x25: 0x000000016c946ee8  x26: 0x000000016c946f18  x27: 0x000000014d500670
                                 x28: 0x000000010687aa30   fp: 0x000000016c946e60   lr: 0x00000001893df120
                                  sp: 0x000000016c946e40   pc: 0x00000001894eba38 cpsr: 0xa0001000
                                 far: 0x0000000000000000  esr: 0x56000080  Address size fault
                              

                              And it's always this line

                              0   libsystem_kernel.dylib        	       0x1894eba38 __close_nocancel + 8
                              

                              Some other times it crashes on a different task

                              Thread 18 Crashed:: Get Mass Data
                              0   libsystem_kernel.dylib        	       0x1894f2a60 __pthread_kill + 8
                              1   libsystem_pthread.dylib       	       0x18952ac20 pthread_kill + 288
                              2   libsystem_c.dylib             	       0x189437a30 abort + 180
                              3   libsystem_malloc.dylib        	       0x189347dc4 malloc_vreport + 896
                              4   libsystem_malloc.dylib        	       0x18934b430 malloc_report + 64
                              5   libsystem_malloc.dylib        	       0x189365494 find_zone_and_free + 528
                              6   HISE                          	       0x1059f690c juce::NamedValueSet::set(juce::Identifier const&, juce::var const&) + 364
                              7   HISE                          	       0x104baf328 hise::HiseJavascriptEngine::RootObject::ArraySubscript::assign(hise::HiseJavascriptEngine::RootObject::Scope const&, juce::var const&) const + 1076
                              8   HISE                          	       0x104b979c4 hise::HiseJavascriptEngine::RootObject::Assignment::getResult(hise::HiseJavascriptEngine::RootObject::Scope const&) const + 72
                              9   HISE                          	       0x104b946b4 hise::HiseJavascriptEngine::RootObject::Expression::perform(hise::HiseJavascriptEngine::RootObject::Scope const&, juce::var*) const + 36
                              10  HISE                          	       0x104bd5f8c hise::HiseJavascriptEngine::RootObject::BlockStatement::performWithinScope(hise::HiseJavascriptEngine::RootObject::Scope const&, juce::var*) const + 644
                              11  HISE                          	       0x104bbc430 hise::HiseJavascriptEngine::RootObject::LoopStatement::perform(hise::HiseJavascriptEngine::RootObject::Scope const&, juce::var*) const + 188
                              12  HISE                          	       0x104bd5f8c hise::HiseJavascriptEngine::RootObject::BlockStatement::performWithinScope(hise::HiseJavascriptEngine::RootObject::Scope const&, juce::var*) const + 644
                              13  HISE                          	       0x104bbd2c8 hise::HiseJavascriptEngine::RootObject::IfStatement::perform(hise::HiseJavascriptEngine::RootObject::Scope const&, juce::var*) const + 116
                              14  HISE                          	       0x104bd5f8c hise::HiseJavascriptEngine::RootObject::BlockStatement::performWithinScope(hise::HiseJavascriptEngine::RootObject::Scope const&, juce::var*) const + 644
                              15  HISE                          	       0x104bbd2c8 hise::HiseJavascriptEngine::RootObject::IfStatement::perform(hise::HiseJavascriptEngine::RootObject::Scope const&, juce::var*) const + 116
                              16  HISE                          	       0x104bd5f8c hise::HiseJavascriptEngine::RootObject::BlockStatement::performWithinScope(hise::HiseJavascriptEngine::RootObject::Scope const&, juce::var*) const + 644
                              17  HISE                          	       0x104bbd2c8 hise::HiseJavascriptEngine::RootObject::IfStatement::perform(hise::HiseJavascriptEngine::RootObject::Scope const&, juce::var*) const + 116
                              18  HISE                          	       0x104bd5f8c hise::HiseJavascriptEngine::RootObject::BlockStatement::performWithinScope(hise::HiseJavascriptEngine::RootObject::Scope const&, juce::var*) const + 644
                              19  HISE                          	       0x104bb3738 hise::HiseJavascriptEngine::RootObject::FunctionObject::invoke(hise::HiseJavascriptEngine::RootObject::Scope const&, juce::var::NativeFunctionArgs const&) const + 968
                              20  HISE                          	       0x104bc0eec hise::HiseJavascriptEngine::callExternalFunctionRaw(juce::var, juce::var::NativeFunctionArgs const&) + 604
                              21  HISE                          	       0x104bc0830 hise::HiseJavascriptEngine::callExternalFunction(juce::var, juce::var::NativeFunctionArgs const&, juce::Result*, bool) + 280
                              22  HISE                          	       0x104bc007c hise::WeakCallbackHolder::CallableObject::call(hise::HiseJavascriptEngine*, juce::var::NativeFunctionArgs const&, juce::var*) + 164
                              23  HISE                          	       0x104b84a90 hise::WeakCallbackHolder::callSync(juce::var::NativeFunctionArgs const&, juce::var*) + 224
                              24  HISE                          	       0x104b8a8c8 hise::WeakCallbackHolder::callSync(juce::var*, int, juce::var*) + 200
                              25  HISE                          	       0x104c16d4c hise::ScriptingObjects::ScriptBackgroundTask::ChildProcessData::callLog(juce::var*) + 76
                              26  HISE                          	       0x104c1512c hise::ScriptingObjects::ScriptBackgroundTask::run() + 1556
                              27  HISE                          	       0x105a027b4 juce::threadEntryProc(void*) + 284
                              28  libsystem_pthread.dylib       	       0x18952af94 _pthread_start + 136
                              29  libsystem_pthread.dylib       	       0x189525d34 thread_start + 8
                              
                              
                              Thread 18 crashed with ARM Thread State (64-bit):
                                  x0: 0x0000000000000000   x1: 0x0000000000000000   x2: 0x0000000000000000   x3: 0x0000000000000000
                                  x4: 0x0000000000000073   x5: 0x000000000000002e   x6: 0x0000000000000001   x7: 0x0000000000000000
                                  x8: 0xc0abdd86d76c12ee   x9: 0xc0abdd87bcdda2ee  x10: 0x000000000000000a  x11: 0x0000000000000000
                                 x12: 0x0000000000000035  x13: 0x0000000000000000  x14: 0x000000012b100000  x15: 0x0000000000000000
                                 x16: 0x0000000000000148  x17: 0x00000001fb719928  x18: 0x0000000000000000  x19: 0x0000000000000006
                                 x20: 0x000000016bb1b000  x21: 0x0000000000001147  x22: 0x000000016bb1b0e0  x23: 0x000000016bb1a430
                                 x24: 0x0000000000000000  x25: 0x0000000000000000  x26: 0x000000016ba07c4b  x27: 0x000000016bb1b000
                                 x28: 0x0000000106275000   fp: 0x000000016bb19d80   lr: 0x000000018952ac20
                                  sp: 0x000000016bb19d60   pc: 0x00000001894f2a60 cpsr: 0x40001000
                                 far: 0x0000000000000000  esr: 0x56000080  Address size fault
                              

                              Another example

                              Crashed Thread:        2  Javascript Thread
                              
                              Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
                              Exception Codes:       KERN_INVALID_ADDRESS at 0xfffffffffffffff0
                              Exception Codes:       0x0000000000000001, 0xfffffffffffffff0
                              
                              Termination Reason:    Namespace SIGNAL, Code 11 Segmentation fault: 11
                              
                              
                              
                              Thread 2 Crashed:: Javascript Thread
                              0   libc++abi.dylib               	       0x1894e27b0 __dynamic_cast + 56
                              1   HISE                          	       0x104974238 hise::HiseJavascriptEngine::RootObject::IsDefinedTest::getResult(hise::HiseJavascriptEngine::RootObject::Scope const&) const + 44
                              2   HISE                          	       0x1049a74e4 hise::HiseJavascriptEngine::RootObject::LogicalAndOp::getResult(hise::HiseJavascriptEngine::RootObject::Scope const&) const + 56
                              3   HISE                          	       0x1049a74e4 hise::HiseJavascriptEngine::RootObject::LogicalAndOp::getResult(hise::HiseJavascriptEngine::RootObject::Scope const&) const + 56
                              4   HISE                          	       0x10498928c hise::HiseJavascriptEngine::RootObject::IfStatement::perform(hise::HiseJavascriptEngine::RootObject::Scope const&, juce::var*) const + 56
                              5   HISE                          	       0x1049a1f8c hise::HiseJavascriptEngine::RootObject::BlockStatement::performWithinScope(hise::HiseJavascriptEngine::RootObject::Scope const&, juce::var*) const + 644
                              6   HISE                          	       0x1049892c8 hise::HiseJavascriptEngine::RootObject::IfStatement::perform(hise::HiseJavascriptEngine::RootObject::Scope const&, juce::var*) const + 116
                              7   HISE                          	       0x1049a1f8c hise::HiseJavascriptEngine::RootObject::BlockStatement::performWithinScope(hise::HiseJavascriptEngine::RootObject::Scope const&, juce::var*) const + 644
                              8   HISE                          	       0x10497f738 hise::HiseJavascriptEngine::RootObject::FunctionObject::invoke(hise::HiseJavascriptEngine::RootObject::Scope const&, juce::var::NativeFunctionArgs const&) const + 968
                              9   HISE                          	       0x10498ceec hise::HiseJavascriptEngine::callExternalFunctionRaw(juce::var, juce::var::NativeFunctionArgs const&) + 604
                              10  HISE                          	       0x10498c830 hise::HiseJavascriptEngine::callExternalFunction(juce::var, juce::var::NativeFunctionArgs const&, juce::Result*, bool) + 280
                              11  HISE                          	       0x1049ddbe0 std::__1::__function::__func<hise::ScriptingApi::Content::ScriptPanel::internalRepaint(bool)::$_152, std::__1::allocator<hise::ScriptingApi::Content::ScriptPanel::internalRepaint(bool)::$_152>, juce::Result (hise::JavascriptProcessor*)>::operator()(hise::JavascriptProcessor*&&) + 648
                              12  HISE                          	       0x1049532fc hise::JavascriptThreadPool::Task::callWithResult() + 636
                              13  HISE                          	       0x104b7ebfc hise::JavascriptThreadPool::executeQueue(hise::JavascriptThreadPool::Task::Type const&, juce::Array<juce::WeakReference<hise::JavascriptProcessor, juce::ReferenceCountedObject>, juce::DummyCriticalSection, 0>&) + 3340
                              14  HISE                          	       0x104b7cfe4 hise::JavascriptThreadPool::run() + 132
                              15  HISE                          	       0x1057ce7b4 juce::threadEntryProc(void*) + 284
                              16  libsystem_pthread.dylib       	       0x18952af94 _pthread_start + 136
                              17  libsystem_pthread.dylib       	       0x189525d34 thread_start + 8
                              
                              1 Reply Last reply Reply Quote 0
                              • First post
                                Last post

                              32

                              Online

                              1.8k

                              Users

                              12.0k

                              Topics

                              104.8k

                              Posts