Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [paho-dev] List * handles passed as NULL in MQTTAsync.c

Hey Ian,

No problem.  It will take me a bit to get all the information together.

Thanks again,
Jimmy
________________________________________
From: paho-dev-bounces@xxxxxxxxxxx [paho-dev-bounces@xxxxxxxxxxx] on behalf of Ian Craggs [icraggs@xxxxxxxxxxxxxxxxxxxxxxx]
Sent: Wednesday, April 30, 2014 3:36 PM
To: paho-dev@xxxxxxxxxxx
Subject: Re: [paho-dev] List * handles passed as NULL in  MQTTAsync.c

That output looks fine.  Two other things you could send me, that could
help:

1) the output from building your application

2) a trace of the problem.  Set the environment variable
MQTT_C_CLIENT_TRACE=filename and then run the program again.  The trace
should be in the file "filename".

If that doesn't help I may be asking for the complete program (if that
is possible) so I can try an ARM environment myself!  I have a Raspberry
Pi and an Arcom Viper which I can experiment with.

Ian

On 04/30/2014 05:50 PM, Jimmy Johnson wrote:
> Ah okay, thanks I didn't realize that was what the wrapper function did.
>
> Here is the output from Make and the gcc cross compiler:
>
> arm-none-linux-gnueabi-gcc (GCC) 4.3.3
> Copyright (C) 2008 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.  There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>
> GNU Make 3.81
> Copyright (C) 2006  Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.
> There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
> PARTICULAR PURPOSE.
>
> Thanks for you help.
>
> Here is my Make dump:
>
> mkdir -p build/output/samples
> mkdir -p build/output/test
> /usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -g -fPIC -O0 -Wall  -shared -Wl,-soname,libpaho-mqtt3c.so.1 -Wl,-init,MQTTClient_init  -o build/output/libpaho-mqtt3c.so.1.0 src/Clients.c src/Heap.c src/LinkedList.c src/Log.c src/Messages.c src/MQTTClient.c src/MQTTPacket.c src/MQTTPacketOut.c src/MQTTPersistence.c src/MQTTPersistenceDefault.c src/MQTTProtocolClient.c src/MQTTProtocolOut.c src/SocketBuffer.c src/Socket.c src/StackTrace.c src/Thread.c src/Tree.c src/utf-8.c
> ln -s libpaho-mqtt3c.so.1.0  build/output/libpaho-mqtt3c.so.1
> ln -s libpaho-mqtt3c.so.1 build/output/libpaho-mqtt3c.so
> /usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -g -fPIC -O0 -Wall  -shared -Wl,-soname,libpaho-mqtt3cs.so.1 -ldl -lcrypto -lssl -Wl,-no-whole-archive -Wl,-init,MQTTClient_init  -o build/output/libpaho-mqtt3cs.so.1.0 src/Clients.c src/Heap.c src/LinkedList.c src/Log.c src/Messages.c src/MQTTClient.c src/MQTTPacket.c src/MQTTPacketOut.c src/MQTTPersistence.c src/MQTTPersistenceDefault.c src/MQTTProtocolClient.c src/MQTTProtocolOut.c src/SocketBuffer.c src/Socket.c src/SSLSocket.c src/StackTrace.c src/Thread.c src/Tree.c src/utf-8.c -DOPENSSL
> ln -s libpaho-mqtt3cs.so.1.0  build/output/libpaho-mqtt3cs.so.1
> ln -s libpaho-mqtt3cs.so.1 build/output/libpaho-mqtt3cs.so
> /usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -g -fPIC -O0 -Wall  -shared -Wl,-soname,libpaho-mqtt3a.so.1 -Wl,-init,MQTTAsync_init  -o build/output/libpaho-mqtt3a.so.1.0 src/Clients.c src/Heap.c src/LinkedList.c src/Log.c src/Messages.c src/MQTTAsync.c src/MQTTPacket.c src/MQTTPacketOut.c src/MQTTPersistence.c src/MQTTPersistenceDefault.c src/MQTTProtocolClient.c src/MQTTProtocolOut.c src/SocketBuffer.c src/Socket.c src/StackTrace.c src/Thread.c src/Tree.c src/utf-8.c
> src/MQTTAsync.c: In function 'Protocol_processPublication':
> src/MQTTAsync.c:1797: warning: format '%x' expects type 'unsigned int', but argument 2 has type 'pthread_t'
> src/MQTTAsync.c:1800: warning: format '%d' expects type 'int', but argument 2 has type 'pthread_t'
> ln -s libpaho-mqtt3a.so.1.0  build/output/libpaho-mqtt3a.so.1
> ln -s libpaho-mqtt3a.so.1 build/output/libpaho-mqtt3a.so
> /usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -g -fPIC -O0 -Wall  -shared -Wl,-soname,libpaho-mqtt3as.so.1 -ldl -lcrypto -lssl -Wl,-no-whole-archive -Wl,-init,MQTTAsync_init  -o build/output/libpaho-mqtt3as.so.1.0 src/Clients.c src/Heap.c src/LinkedList.c src/Log.c src/Messages.c src/MQTTAsync.c src/MQTTPacket.c src/MQTTPacketOut.c src/MQTTPersistence.c src/MQTTPersistenceDefault.c src/MQTTProtocolClient.c src/MQTTProtocolOut.c src/SocketBuffer.c src/Socket.c src/SSLSocket.c src/StackTrace.c src/Thread.c src/Tree.c src/utf-8.c -DOPENSSL
> src/MQTTAsync.c: In function 'Protocol_processPublication':
> src/MQTTAsync.c:1797: warning: format '%x' expects type 'unsigned int', but argument 2 has type 'pthread_t'
> src/MQTTAsync.c:1800: warning: format '%d' expects type 'int', but argument 2 has type 'pthread_t'
> ln -s libpaho-mqtt3as.so.1.0  build/output/libpaho-mqtt3as.so.1
> ln -s libpaho-mqtt3as.so.1 build/output/libpaho-mqtt3as.so
> /usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -I src -lpthread -L build/output -o build/output/MQTTVersion -lpaho-mqtt3a src/MQTTVersion.c -ldl
> /usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -o build/output/samples/pubasync src/samples/pubasync.c -lpaho-mqtt3cs -I src -lpthread -L build/output  -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lssl -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lcrypto -ldl
> /usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -o build/output/samples/subasync src/samples/subasync.c -lpaho-mqtt3cs -I src -lpthread -L build/output  -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lssl -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lcrypto -ldl
> /usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -o build/output/samples/stdoutsuba src/samples/stdoutsuba.c -lpaho-mqtt3as -I src -lpthread -L build/output -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lssl -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lcrypto -ldl
> /usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -o build/output/samples/MQTTAsync_subscribe src/samples/MQTTAsync_subscribe.c -lpaho-mqtt3as -I src -lpthread -L build/output -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lssl -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lcrypto -ldl
> /usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -o build/output/samples/MQTTAsync_publish src/samples/MQTTAsync_publish.c -lpaho-mqtt3as -I src -lpthread -L build/output -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lssl -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lcrypto -ldl
> /usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -g -o build/output/test/test1 src/../test/test1.c -lpaho-mqtt3c -I src -lpthread -L build/output
> /usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -v -g -o build/output/test/test3 src/../test/test3.c -lpaho-mqtt3cs -I src -lpthread -L build/output -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lssl -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lcrypto -ldl
> Using built-in specs.
> Target: arm-none-linux-gnueabi
> Configured with: /home/rgs/toolchain-src-jaunty.rgs0/gcc-4.3-4.3.3/src/configure --prefix=/usr/local/toolchain-arm-jaunty.rgs0 --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --disable-libmudflap --disable-libssp --with-gnu-as --with-gnu-ld --disable-nls --enable-symvers=gnu --enable-__cxa_atexit --disable-libstdcxx-pch --disable-libgomp --with-sysroot=/usr/local/toolchain-arm-jaunty.rgs0/sysroot --with-build-sysroot=/usr/local/toolchain-arm-jaunty.rgs0/sysroot --with-build-time-tools=/usr/local/toolchain-arm-jaunty.rgs0/arm-none-linux-gnueabi/bin --disable-bootstrap --program-prefix=arm-none-linux-gnueabi- --with-gmp=/home/rgs/toolchain-src-jaunty.rgs0/install/gmp --with-mpfr=/home/rgs/toolchain-src-jaunty.rgs0/install/mpfr --enable-threads --enable-shared --enable-languages=c,c++
> Thread model: posix
> gcc version 4.3.3 (GCC)
> COLLECT_GCC_OPTIONS='-v' '-g' '-o' 'build/output/test/test3' '-I' 'src' '-L' 'build/output' '-L/usr/local/toolchain-arm-jaunty.rgs0/lib/' '-L/usr/local/toolchain-arm-jaunty.rgs0/lib/'
>   /opt/toolchain-arm-jaunty.rgs0/bin/../libexec/gcc/arm-none-linux-gnueabi/4.3.3/cc1 -quiet -v -I src -iprefix /opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/ -isysroot /opt/toolchain-arm-jaunty.rgs0/bin/../sysroot src/../test/test3.c -D_FORTIFY_SOURCE=2 -quiet -dumpbase test3.c -auxbase test3 -g -version -fstack-protector -o /tmp/ccla2309.s
> ignoring nonexistent directory "/opt/toolchain-arm-jaunty.rgs0/bin/../sysroot/usr/local/include"
> ignoring duplicate directory "/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/../../lib/gcc/arm-none-linux-gnueabi/4.3.3/include"
> ignoring duplicate directory "/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/../../lib/gcc/arm-none-linux-gnueabi/4.3.3/include-fixed"
> ignoring duplicate directory "/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/../../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/include"
> #include "..." search starts here:
> #include <...> search starts here:
>   src
>   /opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/include
>   /opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/include-fixed
>   /opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/include
>   /opt/toolchain-arm-jaunty.rgs0/bin/../sysroot/usr/include
> End of search list.
> GNU C (GCC) version 4.3.3 (arm-none-linux-gnueabi)
>       compiled by GNU C version 4.3.3, GMP version 4.2.4, MPFR version 2.4.0.
> GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
> Compiler executable checksum: 3b26795e803e1bf90490f3cd7bbab986
> COLLECT_GCC_OPTIONS='-v' '-g' '-o' 'build/output/test/test3' '-I' 'src' '-L' 'build/output' '-L/usr/local/toolchain-arm-jaunty.rgs0/lib/' '-L/usr/local/toolchain-arm-jaunty.rgs0/lib/'
>   /opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/as -v -I src -meabi=4 -o /tmp/ccdexBHk.o /tmp/ccla2309.s
> GNU assembler version 2.19.1 (arm-none-linux-gnueabi) using BFD version (GNU Binutils) 2.19.1
> COMPILER_PATH=/opt/toolchain-arm-jaunty.rgs0/bin/../libexec/gcc/arm-none-linux-gnueabi/4.3.3/:/opt/toolchain-arm-jaunty.rgs0/bin/../libexec/gcc/:/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/
> LIBRARY_PATH=/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/:/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/:/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/lib/:/opt/toolchain-arm-jaunty.rgs0/bin/../sysroot/lib/:/opt/toolchain-arm-jaunty.rgs0/bin/../sysroot/usr/lib/
> COLLECT_GCC_OPTIONS='-v' '-g' '-o' 'build/output/test/test3' '-I' 'src' '-L' 'build/output' '-L/usr/local/toolchain-arm-jaunty.rgs0/lib/' '-L/usr/local/toolchain-arm-jaunty.rgs0/lib/'
>   /opt/toolchain-arm-jaunty.rgs0/bin/../libexec/gcc/arm-none-linux-gnueabi/4.3.3/collect2 --sysroot=/opt/toolchain-arm-jaunty.rgs0/bin/../sysroot --eh-frame-hdr -dynamic-linker /lib/ld-linux.so.3 -X -m armelf_linux_eabi -o build/output/test/test3 -z relro /opt/toolchain-arm-jaunty.rgs0/bin/../sysroot/usr/lib/crt1.o /opt/toolchain-arm-jaunty.rgs0/bin/../sysroot/usr/lib/crti.o /opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/crtbegin.o -L build/output -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -L/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3 -L/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc -L/opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/lib -L/opt/toolchain-arm-jaunty.rgs0/bin/../sysroot/lib -L/opt/toolchain-arm-jaunty.rgs0/bin/../sysroot/usr/lib /tmp/ccdexBHk.o -lpaho-mqtt3cs -lpthread -lssl -lcrypto -ldl -lgcc --as
 -ne
>   eded -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /opt/toolchain-arm-jaunty.rgs0/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/crtend.o /opt/toolchain-arm-jaunty.rgs0/bin/../sysroot/usr/lib/crtn.o
> /usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -g -o build/output/test/test4 src/../test/test4.c -lpaho-mqtt3a -I src -lpthread -L build/output
> /usr/local/toolchain-arm-jaunty.rgs0/bin/arm-none-linux-gnueabi-gcc -g -o build/output/test/test5 src/../test/test5.c -lpaho-mqtt3as -I src -lpthread -L build/output -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lssl -L/usr/local/toolchain-arm-jaunty.rgs0/lib/ -lcrypto -ldl
> src/../test/test5.c: In function 'main':
> src/../test/test5.c:2041: warning: format '%lu' expects type 'long unsigned int', but argument 3 has type 'unsigned int'
>
> ________________________________________
> From: paho-dev-bounces@xxxxxxxxxxx [paho-dev-bounces@xxxxxxxxxxx] on behalf of Ian Craggs [icraggs@xxxxxxxxxxxxxxxxxxxxxxx]
> Sent: Tuesday, April 29, 2014 2:47 PM
> To: paho-dev@xxxxxxxxxxx
> Subject: Re: [paho-dev] List * handles passed as NULL in  MQTTAsync.c
>
> Hi Jimmy,
>
> the "filter-out" function means use all the source files except the ones
> listed.  So SOURCE_FILES_C contains all files except MQTTAsync.c,
> MQTTVersion.c and SSLSocket.c, which looks correct to me.
>
> What version of gcc and make are you using for the cross-compile?
>
> Can you attach a complete build log?  I'd like to see if it's using the
> right set of files, or if anything else looks odd.
>
> Ian
>
> On 04/29/2014 06:33 PM, Jimmy Johnson wrote:
>> Hi Ian,
>>
>> I built the library with the makefile that was included... Now that I am looking at it more closely maybe this is the problem?
>>
>> SOURCE_FILES_C = $(filter-out $(srcdir)/MQTTAsync.c $(srcdir)/MQTTVersion.c $(srcdir)/SSLSocket.c, $(SOURCE_FILES))
>> SOURCE_FILES_CS = $(filter-out $(srcdir)/MQTTAsync.c $(srcdir)/MQTTVersion.c, $(SOURCE_FILES))
>> SOURCE_FILES_A = $(filter-out $(srcdir)/MQTTClient.c $(srcdir)/MQTTVersion.c $(srcdir)/SSLSocket.c, $(SOURCE_FILES))
>> SOURCE_FILES_AS = $(filter-out $(srcdir)/MQTTClient.c $(srcdir)/MQTTVersion.c, $(SOURCE_FILES))
>>
>> It looks like the async client is built and linked with the classic libraries and the classic is built and linked with the async libraries, is this backwards?
>>
>> Still not sure what the problem is.
>>
>> Thanks,
>> Jimmy
>> ________________________________________
>> From: paho-dev-bounces@xxxxxxxxxxx [paho-dev-bounces@xxxxxxxxxxx] on behalf of Ian Craggs [icraggs@xxxxxxxxxxxxxxxxxxxxxxx]
>> Sent: Friday, April 25, 2014 3:40 PM
>> To: paho-dev@xxxxxxxxxxx
>> Subject: Re: [paho-dev] List * handles passed as NULL in  MQTTAsync.c
>>
>> Jimmy,
>>
>> how did you build the library or program?  MQTTAsync.c and MQTTClient.c
>> are not meant to exist in the same program.  You have to pick one
>> library (paho-mqtt3c or paho-mqtt3a) or the other.
>>
>> Ian
>>
>>
>> On 04/25/2014 07:32 PM, Jimmy Johnson wrote:
>>> Sure this was taken directly from one of the examples (and modified for ssl) it was exhibiting the same issue:
>>>
>>> int main(int argc, char* argv[])
>>> {
>>>        MQTTClient client;
>>>        MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;
>>>        int rc;
>>>        int ch;
>>>        MQTTClient_SSLOptions sslOpts = MQTTClient_SSLOptions_initializer;
>>>
>>>
>>>        conn_opts.ssl = &sslOpts;
>>>        sslOpts.trustStore = "/etc/ssl/certs/StartCom_Certification_Authority.pem";
>>>
>>>        MQTTClient_create(&client, ADDRESS, "serial123", MQTTCLIENT_PERSISTENCE_NONE, NULL);
>>>
>>>        conn_opts.keepAliveInterval = 20;
>>>        conn_opts.cleansession = 1;
>>>        conn_opts.password="test";
>>>        conn_opts.username= "serial123";
>>>
>>>        MQTTClient_setCallbacks(client, NULL, connlost, msgarrvd, delivered);
>>>
>>>        if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)
>>>        {
>>>            printf("Failed to connect, return code %d\n", rc);
>>>            exit(-1);
>>>        }
>>>        printf("Subscribing to topic %s as %s\nfor QoS %d\n\n"
>>>               "Press Q<Enter> to quit\n\n", argv[1],conn_opts.username, QOS);
>>>        MQTTClient_subscribe(client, argv[1], QOS);
>>>
>>>        do
>>>        {
>>>            ch = getchar();
>>>        } while(ch!='Q' && ch != 'q');
>>>
>>>        MQTTClient_disconnect(client, 10000);
>>>        MQTTClient_destroy(&client);
>>>        return rc;
>>> }
>>>
>>> ________________________________________
>>> From: paho-dev-bounces@xxxxxxxxxxx [paho-dev-bounces@xxxxxxxxxxx] on behalf of Ian Craggs [icraggs@xxxxxxxxxxxxxxxxxxxxxxx]
>>> Sent: Friday, April 25, 2014 8:08 AM
>>> To: paho-dev@xxxxxxxxxxx
>>> Subject: Re: [paho-dev] List * handles passed as NULL in  MQTTAsync.c
>>>
>>> Hi Jimmy,
>>>
>>> can I have a snippet of your application code to show how you are using
>>> the client library?
>>>
>>> Ian
>>>
>>> On 04/24/2014 11:36 PM, Jimmy Johnson wrote:
>>>> Hi Ian,
>>>>
>>>> I found another possible bug in the C code, and created a possible fix.  Here is what I found:
>>>>
>>>> My client was making a call to MQTTClient_create() in MQTTClient.c which initalizes it's static instance of the "handles" pointer. When the client actually published a message it was calling an instance of Protocol_processPublication which is located in MQTTAsync.c and using the instance of the static "handles" pointer in that file which had never been initalized since I had originally call MQTTClient_create() in MQTTClient.c to set up the client.  This caused a segfault when it hit the ListFindItem method with handles set as NULL.
>>>>
>>>> Here is my stack trace:
>>>>
>>>> #0  0x4002e550 in ListFindItem (aList=0x0, content=0x3c68c,
>>>>         callback=0x40035b48 <clientStructCompare>) at src/LinkedList.c:154
>>>> #1  0x40035ff0 in Protocol_processPublication (publish=0x306bc,
>>>>         client=0x3c68c) at src/MQTTAsync.c:1809
>>>> #2  0x400403e8 in MQTTProtocol_handlePublishes (pack=0x306bc, sock=6)
>>>>         at src/MQTTProtocolClient.c:275
>>>> #3  0x400e5e2c in MQTTClient_cycle (sock=0x41616db4, timeout=1000,
>>>>         rc=0x41616db8) at src/MQTTClient.c:1508
>>>> #4  0x400e24c4 in MQTTClient_run (n=0x3c4fc) at src/MQTTClient.c:483
>>>> #5  0x40189910 in start_thread () from /lib/libpthread.so.0
>>>> #6  0x405913ec in clone () from /lib/libc.so.6
>>>>
>>>> You can see that aList which is a List * is being passed in as NULL (0x0) to ListFindItem after being called from MQTTAsync.c
>>>>
>>>> My fix was to add a parameter to Protocol_processPublication called handles for both MQTTAsync.c and MQTTClient.c files.
>>>>
>>>> So
>>>>
>>>> void Protocol_processPublication(Publish* publish, Clients* client)
>>>>
>>>> becomes:
>>>>
>>>> void Protocol_processPublication(Publish* publish, Clients* client, List * handles)
>>>>
>>>> I then re factored calling methods to include their instance of the handle when making this call.  It seemed to fix everything since the call is no longer relying on a global variable. Oddly enough I did not see this issue when I was compiling and testing under Ubuntu 12.04 on my laptop.  It only started happening only when I cross compiled to my arm platform.  Do you think it will cause any issues?  I am using the library with c++, I don't know if that would make a difference.  I know the docs say that a synchronous client becomes asynchronous when you create callbacks for it, but it doesn't seem to initialize the asynchronous part of the code.
>>>>
>>>> Thanks for any insight you might have.
>>>>
>>>> Jimmy
>>>>
>>>> _______________________________________________
>>>> paho-dev mailing list
>>>> paho-dev@xxxxxxxxxxx
>>>> https://dev.eclipse.org/mailman/listinfo/paho-dev
>>> --
>>> Ian Craggs
>>> icraggs@xxxxxxxxxx                 IBM United Kingdom
>>> Committer on Paho, Mosquitto
>>>
>>> _______________________________________________
>>> paho-dev mailing list
>>> paho-dev@xxxxxxxxxxx
>>> https://dev.eclipse.org/mailman/listinfo/paho-dev
>>> _______________________________________________
>>> paho-dev mailing list
>>> paho-dev@xxxxxxxxxxx
>>> https://dev.eclipse.org/mailman/listinfo/paho-dev
>> --
>> Ian Craggs
>> icraggs@xxxxxxxxxx                 IBM United Kingdom
>> Committer on Paho, Mosquitto
>>
>> _______________________________________________
>> paho-dev mailing list
>> paho-dev@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/paho-dev
>> _______________________________________________
>> paho-dev mailing list
>> paho-dev@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/paho-dev
> --
> Ian Craggs
> icraggs@xxxxxxxxxx                 IBM United Kingdom
> Committer on Paho, Mosquitto
>
> _______________________________________________
> paho-dev mailing list
> paho-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/paho-dev
> _______________________________________________
> paho-dev mailing list
> paho-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/paho-dev

--
Ian Craggs
icraggs@xxxxxxxxxx                 IBM United Kingdom
Committer on Paho, Mosquitto


_______________________________________________
paho-dev mailing list
paho-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/paho-dev


Back to the top