thrift-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Siamak Haschemi <hasch...@informatik.hu-berlin.de>
Subject Re: Use Thrift in the OpenWRT platform
Date Wed, 22 Oct 2008 08:35:26 GMT
Hello David,

thank you for helping me!

I have troubles in setting breakpoints. I'm forced to use gdbserver with
gdb. I replaced the real IP with DEVICE_IP in this E-Mail.

See my comments below.

David Reiss schrieb:
> Can you please report the following...
> 
> 1/ If you can run your program under gdb, please do so.  When it crashes,
> execute the "backtrace" command.  Paste the results.

GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
(gdb) symbol-file hello
Reading symbols from
/home/siamak/seismo-openwrt/trunk/build_dir/i386/hello/hello...done.
(gdb) target remote DEVICE_IP:2345
Remote debugging using DEVICE_IP:2345
0xb7f23910 in ?? ()
(gdb) continue
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0xb7d6db0a in ?? ()
(gdb) backtrace
#0  0xb7d6db0a in ?? ()
#1  0xb7d6db2b in ?? ()
#2  0xb7d6db2b in ?? ()
#3  0xb7d6db2b in ?? ()
#4  0xb7d6db2b in ?? ()
#5  0xb7d6db2b in ?? ()
#6  0xb7d6db2b in ?? ()
#7  0xb7d6db2b in ?? ()
#8  0xb7d6db2b in ?? ()
#9  0xb7d6db2b in ?? ()
#10 0xb7d6db2b in ?? ()
#11 0xb7d6db2b in ?? ()
#12 0xb7d6db2b in ?? ()
#13 0xb7d6db2b in ?? ()
#14 0xb7d6db2b in ?? ()
#15 0xb7d6db2b in ?? ()
#16 0xb7d6db2b in ?? ()
#17 0xb7d6db2b in ?? ()
#18 0xb7d6db2b in ?? ()
#19 0xb7d6db2b in ?? ()
#20 0xb7d6db2b in ?? ()
#21 0xb7d6db2b in ?? ()
#22 0xb7d6db2b in ?? ()
#23 0xb7d6db2b in ?? ()
#24 0xb7d6db2b in ?? ()
#25 0xb7d6db2b in ?? ()
#26 0xb7d6db2b in ?? ()
#27 0xb7d6db2b in ?? ()
#28 0xb7d6db2b in ?? ()
#29 0xb7d6db2b in ?? ()
#30 0xb7d6db2b in ?? ()
#31 0xb7d6db2b in ?? ()
#32 0xb7d6db2b in ?? ()
#33 0xb7d6db2b in ?? ()
---Type <return> to continue, or q <return> to quit---
#34 0xb7d6db2b in ?? ()
#35 0xb7d6db2b in ?? ()
#36 0xb7d6db2b in ?? ()
#37 0xb7d6db2b in ?? ()
#38 0xb7d6db2b in ?? ()
#39 0xb7d6db2b in ?? ()
#40 0xb7d6db2b in ?? ()
#41 0xb7d6db2b in ?? ()
#42 0xb7d6db2b in ?? ()
#43 0xb7d6db2b in ?? ()
#44 0xb7d6db2b in ?? ()
#45 0xb7d6db2b in ?? ()
#46 0xb7d6db2b in ?? ()
#47 0xb7d6db2b in ?? ()
#48 0xb7d6db2b in ?? ()
#49 0xb7d6db2b in ?? ()
#50 0xb7d6db2b in ?? ()
#51 0xb7d6db2b in ?? ()
#52 0xb7d6db2b in ?? ()
#53 0xb7d6db2b in ?? ()
#54 0xb7d6db2b in ?? ()
#55 0xb7d6db2b in ?? ()
#56 0xb7d6db2b in ?? ()
#57 0xb7d6db2b in ?? ()
#58 0xb7d6db2b in ?? ()
#59 0xb7d6db2b in ?? ()
#60 0xb7d6db2b in ?? ()
#61 0xb7d6db2b in ?? ()
#62 0xb7d6db2b in ?? ()
#63 0xb7d6db2b in ?? ()
#64 0xb7d6db2b in ?? ()
#65 0xb7d6db2b in ?? ()
#66 0xb7d6db2b in ?? ()
#67 0xb7d6db2b in ?? ()
---Type <return> to continue, or q <return> to quit---
... and so on

> 
> 2/ execute the command "break setrlimit", then "run" (say "yes" when it
> asks you if you want to start your program from the beginning).  It should
> stop right before calling setrlimit.  Paste the backtrace.

GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
(gdb) symbol-file hello
Reading symbols from
/home/siamak/seismo-openwrt/trunk/build_dir/i386/hello/hello...done.
(gdb) target remote DEVICE_IP:2345
Remote debugging using DEVLICE_IP:2345
0xb7f9c910 in ?? ()
(gdb) break setrlimit
Function "setrlimit" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (setrlimit) pending.
(gdb) c
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0xb7de6b0a in ?? ()

:-( gdb does not stop at the breakpoint.



> 
> Please make sure that you have compiled Thrift for debugging.
> ("./configure CXXFLAGS='-O0 -g'").

I run another test in which I force the loading of a library:

1)
root@OpenWrt:~# env LD_PRELOAD=/usr/lib/libz.so.1 echo hello
hello

2)
root@OpenWrt:~# env LD_PRELOAD=/usr/lib/libnl.so.1 echo hello
hello

3)
root@OpenWrt:~# env LD_PRELOAD=/usr/lib/libthrift.so.0 echo hello
Segmentation fault


======


And here are some (relevant) outputs from the build:


CFLAGS="-O2 -pipe -march=i486 -funit-at-a-time -fhonour-copts
-I/home/siamak/seismo-openwrt/trunk/staging_dir/i386/usr/include
-I/home/siamak/seismo-openwrt/trunk/staging_dir/i386/include "

CXXFLAGS="-O2 -pipe -march=i486 -funit-at-a-time -fhonour-copts
-I/home/siamak/seismo-openwrt/trunk/staging_dir/i386/usr/include
-I/home/siamak/seismo-openwrt/trunk/staging_dir/i386/include  -g"

LDFLAGS="-L/home/siamak/seismo-openwrt/trunk/staging_dir/toolchain-i386_gcc4.1.2/lib
-L/home/siamak/seismo-openwrt/trunk/staging_dir/i386/usr/lib
-L/home/siamak/seismo-openwrt/trunk/staging_dir/i386/lib " make -C
/home/siamak/seismo-openwrt/trunk/build_dir/i386/thrift/lib/cpp

DESTDIR="/home/siamak/seismo-openwrt/trunk/build_dir/i386/thrift/ipkg-install"


AR=i386-linux-uclibc-ar AS="ccache i386-linux-uclibc-gcc -c -O2 -pipe
-march=i486 -funit-at-a-time -fhonour-copts" LD=i386-linux-uclibc-ld

NM=i386-linux-uclibc-nm
CC="ccache i386-linux-uclibc-gcc"
GCC="ccache i386-linux-uclibc-gcc"
CXX="i386-linux-uclibc-g++"
RANLIB=i386-linux-uclibc-ranlib
STRIP=i386-linux-uclibc-strip
OBJCOPY=i386-linux-uclibc-objcopy
OBJDUMP=i386-linux-uclibc-objdump
SIZE=i386-linux-uclibc-size
CROSS="i386-linux-uclibc-"
ARCH="i386"


i386-linux-uclibc-g++ -DHAVE_CONFIG_H -I. -I. -I../.. -I./src
-I/home/siamak/seismo-openwrt/trunk/staging_dir/i386/usr/include
-I/home/siamak/seismo-openwrt/trunk/staging_dir/i386/include -Wall -O0
-g -MT Monitor.lo -MD -MP -MF .deps/Monitor.Tpo -c
src/concurrency/Monitor.cpp  -fPIC -DPIC -o .libs/Monitor.o


> 
> --David
> 
> Siamak Haschemi wrote:
>> Hello again,
>>
>> the Hello world program without the thrift library linked shows this
>> strace (only the last relevant lines included):
>>
>>
>> ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo
>> ...}) = 0
>> ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo
>> ...}) = 0
>> brk(0)                                  = 0x88a7000
>> brk(0x88a8000)                          = 0x88a8000
>> write(1, "Hello World\n", 12Hello World
>> )           = 12
>> _exit(0)
>>
>>
>> For me, it looks like an problem with "getrlimit" or "setrlimit" function.
>>
>> Lind regards,
>>
>> Siamak Haschemi
>>
>> Siamak Haschemi schrieb:
>>> Hello again,
>>>
>>> I don't know if it helps, but here is some more information:
>>>
>>>
>>>
>>> root@OpenWrt:~# ldd ./hello
>>>         libthrift.so.0 => /lib/libthrift.so.0 (0xb7f23000)
>>>         libstdc++.so.6 => /lib/libstdc++.so.6 (0xb7e68000)
>>>         libm.so.0 => /lib/libm.so.0 (0xb7e5b000)
>>>         libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7e52000)
>>>         libc.so.0 => /lib/libc.so.0 (0xb7e08000)
>>>         librt.so.0 => /lib/librt.so.0 (0xb7e05000)
>>>         libpthread.so.0 => /lib/libpthread.so.0 (0xb7df3000)
>>>         ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0xb7fb9000)
>>>
>>>
>>>
>>> root@OpenWrt:~# strace ./hello
>>> execve("/bin/hello", ["/bin/hello"], [/* 8 vars */]) = 0
>>> mmap2(NULL, 20, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
>>> = 0xb7f52000
>>> stat("/etc/ld.so.cache", 0xbff56254)    = -1 ENOENT (No such file or
>>> directory)
>>> open("/lib/libthrift.so.0", O_RDONLY)   = 3
>>> fstat(3, {st_mode=S_IFREG|0755, st_size=604571, ...}) = 0
>>> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>>> 0) = 0xb7f51000
>>> read(3,
>>> "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20q\2\0004\0\0\0"...,
>>> 4096) = 4096
>>> mmap2(NULL, 606208, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
>>> 0xb7ebd000
>>> mmap2(0xb7ebd000, 591833, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3,
>>> 0) = 0xb7ebd000
>>> mmap2(0xb7f4e000, 10651, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3,
>>> 0x91) = 0xb7f4e000
>>> close(3)                                = 0
>>> munmap(0xb7f51000, 4096)                = 0
>>> open("/lib/libstdc++.so.6", O_RDONLY)   = 3
>>> fstat(3, {st_mode=S_IFREG|0755, st_size=741369, ...}) = 0
>>> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>>> 0) = 0xb7f51000
>>> read(3,
>>> "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0,\0\4\0004\0\0\0"...,
>>> 4096) = 4096
>>> mmap2(NULL, 765952, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
>>> 0xb7e02000
>>> mmap2(0xb7e02000, 719316, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3,
>>> 0) = 0xb7e02000
>>> mmap2(0xb7eb2000, 20473, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3,
>>> 0xb0) = 0xb7eb2000
>>> mmap2(0xb7eb7000, 23828, PROT_READ|PROT_WRITE,
>>> MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7eb7000
>>> close(3)                                = 0
>>> munmap(0xb7f51000, 4096)                = 0
>>> open("/lib/libm.so.0", O_RDONLY)        = 3
>>> fstat(3, {st_mode=S_IFREG|0644, st_size=45080, ...}) = 0
>>> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>>> 0) = 0xb7f51000
>>> read(3,
>>> "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0t\21\0\0004\0\0\0"...,
>>> 4096) = 4096
>>> mmap2(NULL, 53248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7df5000
>>> mmap2(0xb7df5000, 41028, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3,
>>> 0) = 0xb7df5000
>>> mmap2(0xb7e00000, 4120, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3,
>>> 0xa) = 0xb7e00000
>>> close(3)                                = 0
>>> munmap(0xb7f51000, 4096)                = 0
>>> open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
>>> fstat(3, {st_mode=S_IFREG|0644, st_size=31974, ...}) = 0
>>> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>>> 0) = 0xb7f51000
>>> read(3,
>>> "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0H\25\0\0004\0\0\0"...,
>>> 4096) = 4096
>>> mmap2(NULL, 36864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7dec000
>>> mmap2(0xb7dec000, 31592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3,
>>> 0) = 0xb7dec000
>>> mmap2(0xb7df4000, 3302, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3,
>>> 0x7) = 0xb7df4000
>>> close(3)                                = 0
>>> munmap(0xb7f51000, 4096)                = 0
>>> open("/lib/libc.so.0", O_RDONLY)        = 3
>>> fstat(3, {st_mode=S_IFREG|0644, st_size=275645, ...}) = 0
>>> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>>> 0) = 0xb7f51000
>>> read(3,
>>> "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@\251\0\0004\0\0\0"...,
>>> 4096) = 4096
>>> mmap2(NULL, 303104, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
>>> 0xb7da2000
>>> mmap2(0xb7da2000, 271528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3,
>>> 0) = 0xb7da2000
>>> mmap2(0xb7de5000, 5309, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3,
>>> 0x42) = 0xb7de5000
>>> mmap2(0xb7de7000, 16988, PROT_READ|PROT_WRITE,
>>> MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7de7000
>>> close(3)                                = 0
>>> munmap(0xb7f51000, 4096)                = 0
>>> open("/lib/librt.so.0", O_RDONLY)       = 3
>>> fstat(3, {st_mode=S_IFREG|0644, st_size=4110, ...}) = 0
>>> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>>> 0) = 0xb7f51000
>>> read(3,
>>> "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\344\4\0\0004\0\0\0"...,
>>> 4096) = 4096
>>> mmap2(NULL, 12288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7d9f000
>>> mmap2(0xb7d9f000, 2336, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3,
>>> 0) = 0xb7d9f000
>>> mmap2(0xb7da0000, 4110, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3,
>>> 0) = 0xb7da0000
>>> close(3)                                = 0
>>> munmap(0xb7f51000, 4096)                = 0
>>> open("/lib/libpthread.so.0", O_RDONLY)  = 3
>>> fstat(3, {st_mode=S_IFREG|0644, st_size=58930, ...}) = 0
>>> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>>> 0) = 0xb7f51000
>>> read(3,
>>> "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0004=\0\0004\0\0\0"...,
>>> 4096) = 4096
>>> mmap2(NULL, 73728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7d8d000
>>> mmap2(0xb7d8d000, 37304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3,
>>> 0) = 0xb7d8d000
>>> mmap2(0xb7d97000, 22066, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3,
>>> 0x9) = 0xb7d97000
>>> mmap2(0xb7d9d000, 6232, PROT_READ|PROT_WRITE,
>>> MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7d9d000
>>> close(3)                                = 0
>>> munmap(0xb7f51000, 4096)                = 0
>>> open("/lib/libstdc++.so.6", O_RDONLY)   = 3
>>> fstat(3, {st_mode=S_IFREG|0755, st_size=741369, ...}) = 0
>>> close(3)                                = 0
>>> open("/lib/libm.so.0", O_RDONLY)        = 3
>>> fstat(3, {st_mode=S_IFREG|0644, st_size=45080, ...}) = 0
>>> close(3)                                = 0
>>> open("/lib/libc.so.0", O_RDONLY)        = 3
>>> fstat(3, {st_mode=S_IFREG|0644, st_size=275645, ...}) = 0
>>> close(3)                                = 0
>>> open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
>>> fstat(3, {st_mode=S_IFREG|0644, st_size=31974, ...}) = 0
>>> close(3)                                = 0
>>> open("/lib/libm.so.0", O_RDONLY)        = 3
>>> fstat(3, {st_mode=S_IFREG|0644, st_size=45080, ...}) = 0
>>> close(3)                                = 0
>>> open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
>>> fstat(3, {st_mode=S_IFREG|0644, st_size=31974, ...}) = 0
>>> close(3)                                = 0
>>> open("/lib/libc.so.0", O_RDONLY)        = 3
>>> fstat(3, {st_mode=S_IFREG|0644, st_size=275645, ...}) = 0
>>> close(3)                                = 0
>>> open("/lib/libc.so.0", O_RDONLY)        = 3
>>> fstat(3, {st_mode=S_IFREG|0644, st_size=275645, ...}) = 0
>>> close(3)                                = 0
>>> open("/lib/libc.so.0", O_RDONLY)        = 3
>>> fstat(3, {st_mode=S_IFREG|0644, st_size=275645, ...}) = 0
>>> close(3)                                = 0
>>> open("/lib/libc.so.0", O_RDONLY)        = 3
>>> fstat(3, {st_mode=S_IFREG|0644, st_size=275645, ...}) = 0
>>> close(3)                                = 0
>>> open("/lib/libc.so.0", O_RDONLY)        = 3
>>> fstat(3, {st_mode=S_IFREG|0644, st_size=275645, ...}) = 0
>>> close(3)                                = 0
>>> stat("/lib/ld-uClibc.so.0", {st_mode=S_IFREG|0755, st_size=16390, ...}) = 0
>>> mprotect(0xb7eb2000, 16384, PROT_READ)  = 0
>>> mprotect(0xb7e00000, 4096, PROT_READ)   = 0
>>> mprotect(0xb7de5000, 4096, PROT_READ)   = 0
>>> mprotect(0xb7da0000, 4096, PROT_READ)   = 0
>>> mprotect(0xb7d97000, 4096, PROT_READ)   = 0
>>> mprotect(0xb7f57000, 4096, PROT_READ)   = 0
>>> ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo
>>> ...}) = 0
>>> ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo
>>> ...}) = 0
>>> getpid()                                = 2933
>>> getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
>>> setrlimit(RLIMIT_STACK, {rlim_cur=2040*1024, rlim_max=RLIM_INFINITY}) = 0
>>> rt_sigaction(SIGRTMIN, {0xb7d95f96, [], SA_RESTORER, 0xb7dac998}, NULL,
>>> 8) = 0
>>> rt_sigaction(SIGRT_1, {0xb7d95efe, [RTMIN], SA_RESTORER, 0xb7dac998},
>>> NULL, 8) = 0
>>> rt_sigaction(SIGRT_2, {0xb7d9562a, [], SA_RESTORER, 0xb7dac998}, NULL,
>>> 8) = 0
>>> rt_sigprocmask(SIG_BLOCK, [RTMIN], NULL, 8) = 0
>>> rt_sigprocmask(SIG_UNBLOCK, [RT_1], NULL, 8) = 0
>>> --- SIGSEGV (Segmentation fault) @ 0 (0) ---
>>> +++ killed by SIGSEGV +++
>>>
>>>
>>>
>>> Kind regards,
>>>
>>> Siamak Haschemi
>>>
>>> Siamak Haschemi schrieb:
>>>> Hello,
>>>>
>>>> as you seen here (https://issues.apache.org/jira/browse/THRIFT-177), I
>>>> am trying to cross-compile Thrift for the OpenWRT platform
>>>> (http://openwrt.org/), which is a Linux distribution for embedded devices.
>>>>
>>>> After a two-night-fight, my result are the following:
>>>>
>>>> - I've created a OpenWRT package for thrift (see the attachment if you
>>>> are interested).
>>>> - I've successfully compiled the cpp-library (which results in
>>>> libthrift, libthriftz and libthriftnb)
>>>> - For now, I will not cross-compile the thrift-compiler since I will
>>>> compile the thrift definition files on my PC.
>>>>
>>>> Coming to this point, I was very happy and I thought that the story
>>>> ends, but now I am faced with a problem I cannot solve myself:
>>>>
>>>> For testing my cross-compilation result, I cross-compiled the cpp-part
>>>> of the thrift tutorial. I installed the cross-compiled libraries on the
>>>> target device and start the CppServer and the only reaction was
>>>> "Segmentation Fault" :-(
>>>>
>>>>
>>>> I tried to backtrack the problem and I came to the finding, that a
>>>> simple hello world program, which is linked to my cross-compiled
>>>> thrift-library, causes the "Segmentation Fault". Without linking the
>>>> thrift-library, everything is O.K.
>>>>
>>>>
>>>> =======================
>>>> ------------
>>>> Hello.cpp
>>>> ------------
>>>>
>>>> #include <iostream>
>>>>
>>>> using namespace std;
>>>>
>>>> int main(int argc, char **argv) {
>>>>   printf("Hello World!\n");
>>>>   return 0;
>>>> }
>>>>
>>>> 1) First try
>>>>
>>>> $ i386-linux-uclibc-g++ -L${LIB_DIR} -levent *-lthrift* -o Hello Hello.cpp
>>>>
>>>> On the target device:
>>>>
>>>> root@OpenWrt:~# ./Hello
>>>> Segmentation fault
>>>>
>>>> 2) Second try
>>>>
>>>> $ i386-linux-uclibc-g++ -L${LIB_DIR} -levent -o Hello Hello.cpp
>>>>
>>>> On the target device:
>>>>
>>>> root@OpenWrt:~# ./Hello
>>>> Hello World!
>>>>
>>>> ======================
>>>>
>>>> I will try to debug it with gdb, but I'm not an expert in this.
>>>>
>>>>
>>>> So, please, can someone help me?
>>>>
>>>>
>>>>
>>>> Kind regards,
>>>>
>>>> Siamak Haschemi
>>>>
>>>>
>>>>
>>>>
>>>>

Mime
  • Unnamed multipart/mixed (inline, None, 0 bytes)
View raw message