<div dir="ltr">Hello,<div>I have a custom OpenSSL engine and it is working fine with pthread. I was trying to use a third-party <a href="https://github.com/stonebuddha/uthread">thread library</a> by linking this library with my engine. However, upon linking and running the engine, I'm getting a Segmentation fault. I just could not figure out why. I have a hunch that my linking with the newly built dynamic library is not correct,  </div><div><br></div><div>Following is what I did</div><div>1. Compile the thread library as a dynamic library </div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>CC      = gcc</div><div>CFLAGS  = -Wall -fPIC -g -O3 -MD</div><div>LDFLAGS = -shared</div><div>OBJ     = uthread.o</div></blockquote><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>all: libuthread.so</div></blockquote><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>libuthread.so: $(OBJ)</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>        $(LD) -shared -o $(@) $(OBJ)</div></blockquote><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>clean:</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>        rm -f *.o *.d libuthread.so</div></blockquote><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>-include *.d</div></blockquote><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>%.o: %.c</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>        $(CC) $(CFLAGS) -o $@ -c $<</div><div><br></div></blockquote>2. Copy this library to <b>/lib/x86_64-linux-gnu/</b><div>3. My Make file to compile my OpenSSL engine</div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><b>gcc -g -fPIC -c -fomit-frame-pointer rsa-engine.c</b></div><div><b>gcc -g -shared -o librsa_engine.so -L./libdune rsa-engine.o rsa/rsa.o rsa/bignum.o rsa/aes.o -Wl,-Bstatic -ldune -Wl,-Bdynamic -lcrypto -luthread</b></div><div><b>mv librsa_engine.so rsa-engine-new.so<br></b></div><div><br></div></blockquote>4. After compilation, $<b>ldd rsa-engine-new.so</b>  shows the following,<div> </div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div>        linux-vdso.so.1 =>  (0x00007ffded367000)</div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div>     libcrypto.so.1.1 => /opt/openssl/lib/libcrypto.so.1.1 (0x00007f895c5fa000)</div></div><div><div>     libuthread.so => /lib/x86_64-linux-gnu/libuthread.so (0x00007f895c3f4000)</div></div><div><div>      libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f895c02a000)</div></div><div><div>      libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f895be26000)</div></div><div><div>    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f895bc09000)</div></div><div><div>  /lib64/ld-linux-x86-64.so.2 (0x00007f895cd56000)</div></div><div><br></div></blockquote>I use gdb to find out what causes the segmentation fault, I find out that <b>uthread_join(), </b>is failing at some point. Can someone please tell me what I'm, doing wrong? <div>N.B: I checked the library with a simple program and the library works fine. <br></div><div><br></div><div>Thanks,</div><div>Shariful</div></div>