On Sep 10, 2015, at 1:15 PM, Markus Armbruster wrote: > Programmingkid <programmingk...@gmail.com> writes: > >> On Sep 10, 2015, at 3:21 AM, Markus Armbruster wrote: >> >>> Programmingkid <programmingk...@gmail.com> writes: >>> >>>> Does this look about right? >>>> >>>> QDict *qdict; >>>> Error *errp; >>>> QObject **ret_data; >>>> static int counter; >>>> char *idString, *fileName; >>>> >>>> // The file variable is objective-c, left that code out >>>> >>>> fileName = g_strdup_printf("%s", >>>> [file cStringUsingEncoding: >>>> NSASCIIStringEncoding]); >>>> >>>> /* Create an unique id */ >>>> idString = g_strdup_printf("USB%d", counter++); >>>> >>>> /* Create the QDICT object */ >>>> qdict = qdict_new(); >>>> qdict_put_obj(qdict, "id", qstring_from_str(idString)); >>>> qdict_put_obj(qdict, "device", qstring_from_str(idString)); >>>> qdict_put_obj(qdict, "if", qstring_from_str("none")); >>>> qdict_put_obj(qdict, "file", qstring_from_str(fileName)); >>>> qdict_put_obj(qdict, "driver", qstring_from_str("usb-storage")); >>>> drive_add(IF_DEFAULT, 0, fileName, "none"); >>>> qmp_device_add(qdict, ret_data, &errp); >>>> handleAnyDeviceErrors(errp); >>>> g_free(fileName); >>>> g_free(idString); >>>> >>>> This is a sample of what I am working on. For some reason, it crashes >>>> QEMU. Any clues why? I think it might be because of qdict_put_obj(). >>> >>> My crystal ball is down for maintenance today, so you'll have to gives >>> us the clues yourself: a stack backtrace, for starters :) >> >> Here is the error: >> >> 2015-09-10 12:21:12.355 qemu-system-ppc[17603:903] HIToolbox: ignoring >> exception 'Uncaught system exception: signal 11' that raised inside >> Carbon event dispatch >> ( >> 0 CoreFoundation 0x00007fff83ad37b4 __exceptionPreprocess + >> 180 >> 1 libobjc.A.dylib 0x00007fff83567f03 objc_exception_throw + 45 >> 2 CoreFoundation 0x00007fff83b2b969 -[NSException raise] + 9 >> 3 ExceptionHandling 0x00007fff845082d3 >> NSExceptionHandlerUncaughtSignalHandler + 37 >> 4 libSystem.B.dylib 0x00007fff825431ba _sigtramp + 26 >> 5 ??? 0x00007fff5fc12dc0 0x0 + 140734799883712 >> 6 qemu-system-ppc 0x00000001003c4109 qdict_get_try_str + 58 >> 7 qemu-system-ppc 0x00000001003dba04 qemu_opts_from_qdict + 63 >> 8 qemu-system-ppc 0x0000000100169388 qmp_device_add + 78 > > Crashes in qdict_get_try_str(). Use a debugger to find out what goes > wrong there.
This is what it said: Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_INVALID_ADDRESS at address: 0x0000000001a7e130 0x00000001003c39e9 in qobject_type (obj=0x1a7e130) at qobject.h:109 109 assert(obj->type != NULL); (gdb) bt #0 0x00000001003c39e9 in qobject_type (obj=0x1a7e130) at qobject.h:109 #1 0x00000001003c4145 in qdict_get_try_str (qdict=0x102890a00, key=0x1003e8308 "id") at qobject/qdict.c:341 #2 0x00000001003dba44 in qemu_opts_from_qdict (list=0x1005a2f40, qdict=0x102890a00, errp=0x7fff5fbfcfe0) at util/qemu-option.c:968 #3 0x00000001001693b4 in qmp_device_add (qdict=0x102890a00, ret_data=0x7fff5fbfd038, errp=0x7fff5fbfd030) at qdev-monitor.c:767 I do not know much about the QDict type. Did I use it right by using qstring_from_str() to set a key's value to another string?