gpt4 book ai didi

objective-c - EXC_BAD_ACCESS与libssh2吗?

转载 作者:行者123 更新时间:2023-12-01 19:21:27 25 4
gpt4 key购买 nike

我终于能够编译libssh2,但是现在我仍然看到EXC_BAD_ACCESS错误。

这是关于libssh2是如何工作的(至少是GUI)的基本背景是...

  • 输入命令
  • 输入主机IP
  • 输入用户名/密码
  • 按下按钮以发送SSH命令

  • 现在,像 echo Hello World这样的简单命令可以正常工作,但是作为项目的整个想法是能够远程重新启动Mac。最初,使用 shutdown -r命令不会导致远程计算机上发生任何事情,并使应用程序崩溃。然后我想到可以使用 open /path/to/restart.app命令简单地打开一个可重新启动mac的applescript应用程序,效果很好。机器重新启动,yippee!

    除此以外,该应用程序因以下错误而崩溃:
    Thread 1: EXC_BAD_ACCESS (code=1, address=_____)

    我对Objective-C真的很陌生,我也不知道如何解决这个问题。在Google上查找它,我发现它是由以下原因引起的:
  • 内存问题
  • 消息发送到已经释放的对象(我不确定这是什么意思,有帮助吗?)

  • 因此,我猜测一旦通过SSH发送命令,它就会断开连接,然后疲倦地显示结果,但对象已经消失了。

    我会为此发布源代码,但是其中包含许多不同的文件,因此我将发布github链接:

    https://github.com/x2on/libssh2-for-iOS

    我没有修改任何代码,因此,如果有人希望复制我的问题,那么我正在使用的代码与那里的代码相同。

    崩溃日志:
    Process:         libssh2-for-iOS [38153]
    Path: /Users/USER/Library/Application Support/iPhone Simulator/*/libssh2-for-iOS.app/libssh2-for-iOS
    Identifier: libssh2-for-iOS
    Version: ???
    Code Type: X86 (Native)
    Parent Process: ??? [1]
    User ID: 501

    Date/Time: 2012-04-18 18:32:03.883 -0400
    OS Version: Mac OS X 10.8 (12A154q)
    Report Version: 10

    Crashed Thread: 0

    Exception Type: EXC_BAD_ACCESS (SIGBUS)
    Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000000

    External Modification Warnings:
    Debugger attached to process.

    VM Regions Near 0:
    --> __PAGEZERO 0000000000000000-0000000000001000 [ 4K] ---/--- SM=NUL /Users/USER/Library/Application Support/iPhone Simulator/*/libssh2-for-iOS.app/libssh2-for-iOS
    __TEXT 0000000000001000-0000000000002000 [ 4K] r-x/rwx SM=COW /Users/USER/Library/Application Support/iPhone Simulator/*/libssh2-for-iOS.app/libssh2-for-iOS

    Application Specific Information:
    iPhone Simulator 272, iPhone OS 5.0 (iPhone/9A334)


    Thread 0 Crashed:
    0 ??? 0000000000 0 + 0
    1 libssh2-for-iOS 0x00003f39 _libssh2_channel_open + 281
    2 libssh2-for-iOS 0x00004837 libssh2_channel_open_ex + 151
    3 libssh2-for-iOS 0x00003714 -[SSHWrapper executeCommand:] + 212
    4 libssh2-for-iOS 0x00002b22 -[libssh2_for_iOSAppDelegate executeCommand:] + 338
    5 CoreFoundation 0x01603ec9 -[NSObject performSelector:withObject:withObject:] + 73
    6 UIKit 0x0049e5c2 -[UIApplication sendAction:to:from:forEvent:] + 96
    7 UIKit 0x0049e55a -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 61
    8 UIKit 0x00543b76 -[UIControl sendAction:to:forEvent:] + 66
    9 UIKit 0x0054403f -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 503
    10 UIKit 0x00542e22 -[UIControl touchesBegan:withEvent:] + 264
    11 UIKit 0x004c393f -[UIWindow _sendTouchesForEvent:] + 272
    12 UIKit 0x004c3c56 -[UIWindow sendEvent:] + 273
    13 UIKit 0x004aa384 -[UIApplication sendEvent:] + 464
    14 UIKit 0x0049daa9 _UIApplicationHandleEvent + 8196
    15 GraphicsServices 0x01cf8fa9 PurpleEventCallback + 1274
    16 CoreFoundation 0x015d61c5 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
    17 CoreFoundation 0x0153b022 __CFRunLoopDoSource1 + 146
    18 CoreFoundation 0x0153990a __CFRunLoopRun + 2218
    19 CoreFoundation 0x01538db4 CFRunLoopRunSpecific + 212
    20 CoreFoundation 0x01538ccb CFRunLoopRunInMode + 123
    21 GraphicsServices 0x01cf7879 GSEventRunModal + 207
    22 GraphicsServices 0x01cf793e GSEventRun + 114
    23 UIKit 0x0049ba9b UIApplicationMain + 1175
    24 libssh2-for-iOS 0x00003266 main + 134
    25 libssh2-for-iOS 0x00002955 start + 53

    Thread 1:
    0 libsystem_kernel.dylib 0x921059be kevent + 10
    1 libdispatch.dylib 0x01c9e398 _dispatch_mgr_invoke + 918
    2 libdispatch.dylib 0x01c9cc9d _dispatch_mgr_thread + 53

    Thread 2:: WebThread
    0 libsystem_kernel.dylib 0x921027e2 mach_msg_trap + 10
    1 libsystem_kernel.dylib 0x92101cc0 mach_msg + 68
    2 CoreFoundation 0x015d613a __CFRunLoopServiceMachPort + 186
    3 CoreFoundation 0x01539605 __CFRunLoopRun + 1445
    4 CoreFoundation 0x01538db4 CFRunLoopRunSpecific + 212
    5 CoreFoundation 0x01538ccb CFRunLoopRunInMode + 123
    6 WebCore 0x03583220 RunWebThread(void*) + 560
    7 libsystem_c.dylib 0x9445dd03 _pthread_start + 344
    8 libsystem_c.dylib 0x944486ae thread_start + 34

    Thread 0 crashed with X86 Thread State (32-bit):
    eax: 0x00000000 ebx: 0x00000007 ecx: 0x07439400 edx: 0x00000000
    edi: 0x00040000 esi: 0x00008000 ebp: 0xbfffbbc8 esp: 0xbfffbb2c
    ss: 0x00000023 efl: 0x00010286 eip: 0x00000000 cs: 0x0000001b
    ds: 0x00000023 es: 0x00000023 fs: 0x00000000 gs: 0x0000000f
    cr2: 0x00000000
    Logical CPU: 1

    (Binary images removed, too many characters)

    External Modification Summary:
    Calls made by other processes targeting this process:
    task_for_pid: 1
    thread_create: 0
    thread_set_state: 32
    Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
    Calls made by all processes on this machine:
    task_for_pid: 14309
    thread_create: 0
    thread_set_state: 550

    VM Region Summary:
    ReadOnly portion of Libraries: Total=155.0M resident=50.0M(32%) swapped_out_or_unallocated=105.0M(68%)
    Writable regions: Total=36.7M written=2264K(6%) resident=9020K(24%) swapped_out=108K(0%) unallocated=27.9M(76%)

    REGION TYPE VIRTUAL
    =========== =======
    CG image 16K
    CoreAnimation 532K
    MALLOC 21.8M
    MALLOC guard page 32K
    Memory tag=35 10.8M
    SQLite page cache 288K
    Stack 65.3M
    VM_ALLOCATE 136K
    __DATA 9660K
    __LINKEDIT 55.9M
    __PAGEZERO 4K
    __TEXT 99.1M
    __UNICODE 544K
    mapped file 237.8M
    shared memory 12K
    =========== =======
    TOTAL 501.6M

    最佳答案

    我已经从https://github.com/x2on/libssh2-for-iOS下载了示例代码,并编译了libssl和libssh2以及该应用程序。当我运行该应用程序时,出现了与您非常相似的错误:

    Thread 1: EXC_BAD_ACCESS (code=2, address=0x12c)

    由于某种原因未建立连接时,这会发生在我身上。例如。如果您不输入任何IP地址,则会发生此异常,或者输入的内容不是IP地址。

    问题似乎出在x2on的应用程序内部,而不是libssh2或libssl中。当我调试该应用程序时,我发现,当无法建立连接时,名为 session的变量为NULL。因此,以后对 libssh2_channel_open_session的调用将因该异常而失败,因为它期望其参数不为NULL。

    请参见以下屏幕截图:

    在左下角,您可以看到 session变量的值。如果为NULL,那就是问题所在。您也可以在右下角的控制台输出窗口中看到问题的原因,在我的情况下,它是“连接失败!”。

    无论如何,x2on的代码似乎是一个非常非常糟糕的代码示例,它忽略了错误,使用了错误的编码样式和许多不适当的技术(全局变量,未设置rootviewcontroller)和其他不好的东西。

    关于objective-c - EXC_BAD_ACCESS与libssh2吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10229104/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com