I have used curl 7.73, openssl-1.1.1,libssh2-1.9.0 & zlib-1.2.11 Regards, Treesa
On Mon, Feb 28, 2022 at 1:02 PM treesa fairy joseph <trees...@gmail.com> wrote: > > Hello, > The below is the core dump, for the above sample program. > > GNU gdb (Cavium Inc. Version 0.99 build 440) 7.8.50.20140823-cvs > Copyright (C) 2014 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 "aarch64-thunderx-linux-gnu". > Type "show configuration" for configuration details. > For bug reporting instructions, please see: > <http://www.cavium.com/support.html>. > Find the GDB manual and other documentation resources online at: > <http://www.gnu.org/software/gdb/documentation/>. > For help, type "help". > Type "apropos word" to search for commands related to "word"... > Reading symbols from curl_sample_type1...done. > > warning: core file may not match specified executable file. > [New LWP 7954] > [New LWP 7953] > > warning: Could not load shared library symbols for linux-vdso.so.1. > Do you need "set solib-search-path" or "set sysroot"? > [Thread debugging using libthread_db enabled] > Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1". > Core was generated by `./curl_sample_type1'. > Program terminated with signal SIGSEGV, Segmentation fault. > #0 0x000000000042bb48 in singlesocket (multi=0xffff740024d8, > data=0xffff740008c8) at multi.c:2806 > 2806 multi.c: No such file or directory. > (gdb) bt > #0 0x000000000042bb48 in singlesocket (multi=0xffff740024d8, > data=0xffff740008c8) at multi.c:2806 > #1 0x00000000004280f8 in curl_multi_remove_handle > (multi=0xffff740024d8, data=0xffff740008c8) > at multi.c:809 > #2 0x0000000000402cec in easy_perform (data=0xffff740008c8, > events=false) at easy.c:686 > #3 0x0000000000402d20 in curl_easy_perform (data=0xffff740008c8) at > easy.c:701 > #4 0x0000000000401c18 in pull_one_url (url=0x7a5488) at > multithread_type1.c:342 > #5 0x000000000071c018 in start_thread (arg=0x0) at pthread_create.c:335 > #6 0x00000000007577d8 in thread_start () at > ../sysdeps/unix/sysv/linux/aarch64/clone.S:94 > (gdb) full bt > Undefined command: "full". Try "help". > (gdb) bt full > #0 0x000000000042bb48 in singlesocket (multi=0xffff740024d8, > data=0xffff740008c8) at multi.c:2806 > j = 0 > stillused = false > socks = {-1, -1, -1, -1, -1} > i = 81326 > entry = 0x0 > s = 0 > num = 0 > curraction = 0 > actions = {4427656, 0, 2077615200, 65535, 4574260} > __PRETTY_FUNCTION__ = "singlesocket" > #1 0x00000000004280f8 in curl_multi_remove_handle > (multi=0xffff740024d8, data=0xffff740008c8) > at multi.c:809 > easy = 0xffff740008c8 > premature = false > easy_owns_conn = false > e = 0x1600000000 > #2 0x0000000000402cec in easy_perform (data=0xffff740008c8, > events=false) at easy.c:686 > multi = 0xffff740024d8 > mcode = CURLM_OK > result = CURLE_HTTP_RETURNED_ERROR > pipe_st = {old_pipe_act = {__sigaction_handler = {sa_handler = > 0x0, sa_sigaction = 0x0}, > sa_mask = {__val = {0, 9232388042942056450, > 281472759358576, 281472759358576, > 281472627908192, 281472627908192, 0, 281472627907776, > 281472759358528, 4378944, > 25769828978, 36305904856, 281472759358576, > 281472627902664, 281472759358528, > 4378924}}, sa_flags = 0, sa_restorer = 0x0}, no_signal = > false} > #3 0x0000000000402d20 in curl_easy_perform (data=0xffff740008c8) at > easy.c:701 > No locals. > #4 0x0000000000401c18 in pull_one_url (url=0x7a5488) at > multithread_type1.c:342 > header_chunk = {memory = 0x0, size = 0} > slist = 0xffff740022e8 > msg = 0x7a5678 "Field=1&Field=2&Field=3" > curl = 0xffff740008c8 > chunk = {memory = 0x0, size = 0} > str = 0x0 > arr = '\000' <repeats 511 times> > token = 0x0 > ---Type <return> to continue, or q <return> to quit--- > > On Mon, Feb 28, 2022 at 12:57 PM treesa fairy joseph <trees...@gmail.com> > wrote: > > > > curl-library <curl-library@lists.haxx.se> > > > > On Mon, Feb 28, 2022 at 12:12 PM treesa fairy joseph <trees...@gmail.com> > > wrote: > > > > > > Hello Daniel, > > > Could not come back to this issue, for a while. Right now, back on this > > > problem. > > > The below shows the sample program which also generates the seg flt > > > > > > > > > > > > /*************************************************************************** > > > * _ _ ____ _ > > > * Project ___| | | | _ \| | > > > * / __| | | | |_) | | > > > * | (__| |_| | _ <| |___ > > > * \___|\___/|_| \_\_____| > > > * > > > * Copyright (C) 1998 - 2020, Daniel Stenberg, <dan...@haxx.se>, et al. > > > * > > > * This software is licensed as described in the file COPYING, which > > > * you should have received as part of this distribution. The terms > > > * are also available at https://curl.haxx.se/docs/copyright.html. > > > * > > > * You may opt to use, copy, modify, merge, publish, distribute and/or > > > sell > > > * copies of the Software, and permit persons to whom the Software is > > > * furnished to do so, under the terms of the COPYING file. > > > * > > > * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF > > > ANY > > > * KIND, either express or implied. > > > * > > > > > > ***************************************************************************/ > > > /* <DESC> > > > * A multi-threaded example that uses pthreads to fetch several files at > > > once > > > * </DESC> > > > */ > > > > > > #include <stdio.h> > > > #include <pthread.h> > > > #include <curl/curl.h> > > > #include <stdio.h> > > > #include <stdlib.h> > > > #include <string.h> > > > #include <curl/curl.h> > > > #include <openssl/x509v3.h> > > > #include <openssl/x509_vfy.h> > > > #include <openssl/crypto.h> > > > #include <openssl/lhash.h> > > > #include <openssl/objects.h> > > > #include <openssl/err.h> > > > #include <openssl/evp.h> > > > #include <openssl/x509.h> > > > #include <openssl/pkcs12.h> > > > #include <openssl/bio.h> > > > #include <openssl/ssl.h> > > > #include <openssl/ossl_typ.h> > > > //#include <crypto/internal/x509_int.h> > > > #include <crypto/include/internal/x509_int.h> > > > > > > #define NUMT 1 > > > typedef struct MemoryStruct > > > { > > > unsigned char *memory; > > > size_t size; > > > } memory_struct_t; > > > #define ZERO_NULL 0 > > > > > > > > > typedef struct sslctxparm_st { > > > unsigned char *p12file; > > > const char *pst; > > > PKCS12 *p12; > > > EVP_PKEY *pkey; > > > X509 *usercert; > > > STACK_OF(X509) * ca; > > > CURL *curl; > > > BIO *errorbio; > > > int accesstype; > > > int verbose; > > > > > > } sslctxparm; > > > > > > /* > > > List of URLs to fetch. > > > > > > If you intend to use a SSL-based protocol here you might need to setup > > > TLS > > > library mutex callbacks as described here: > > > > > > https://curl.haxx.se/libcurl/c/threadsafe.html > > > > > > */ > > > > > > /******************************************************************************** > > > * Function Name : ipr_cwmp_WriteMemoryCallback > > > * > > > * Description : > > > * > > > * > > > * Returns : > > > * > > > *******************************************************************************/ > > > > > > size_t ipr_cwmp_WriteMemoryCallback(void *contents, > > > size_t size, > > > size_t nmemb, > > > void *userp) > > > { > > > size_t realsize = size * nmemb; > > > struct MemoryStruct *mem = (struct MemoryStruct *)userp; > > > mem->memory = realloc(mem->memory, mem->size + realsize + 1 ); > > > if (mem->memory == NULL) > > > { > > > /* out of memory! */ > > > printf("Exiting the function ipr_cwmp_WriteMemoryCallback 101 > > > \n"); > > > exit(1); > > > } > > > memcpy(&(mem->memory[mem->size]), contents, realsize); > > > mem->size += realsize; > > > mem->memory[mem->size] = 0; > > > printf("Exiting the function ipr_cwmp_WriteMemoryCallback 100 \n"); > > > return realsize; > > > } > > > > > > > > > /* This is an application verification call back, it does not > > > perform any addition verification but tries to find a URL > > > in the presented certificate. If found, this will become > > > the URL to be used in the POST. > > > */ > > > static int ssl_app_verify_callback(X509_STORE_CTX *ctx, void *arg) > > > { > > > sslctxparm * p = (sslctxparm *) arg; > > > int ok; > > > > > > if(p->verbose > 2) > > > BIO_printf(p->errorbio, "entering ssl_app_verify_callback\n"); > > > > > > ok = X509_verify_cert(ctx); > > > if(ok && ctx->cert) { > > > unsigned char *accessinfo; > > > if(p->verbose > 1) > > > X509_print_ex(p->errorbio, ctx->cert, 0, 0); > > > > > > // accessinfo = my_get_ext(ctx->cert, p->accesstype, > > > NID_sinfo_access); > > > // if(accessinfo) { > > > // if(p->verbose) > > > // BIO_printf(p->errorbio, "Setting URL from SIA to: > > > %s\n", accessinfo); > > > // > > > // curl_easy_setopt(p->curl, CURLOPT_URL, accessinfo); > > > // } > > > // else if(accessinfo = my_get_ext(ctx->cert, p->accesstype, > > > // NID_info_access)) { > > > // if(p->verbose) > > > // BIO_printf(p->errorbio, "Setting URL from AIA to: > > > %s\n", accessinfo); > > > // > > > // curl_easy_setopt(p->curl, CURLOPT_URL, accessinfo); > > > // } > > > } > > > if(p->verbose > 2) > > > BIO_printf(p->errorbio, "leaving ssl_app_verify_callback with > > > %d\n", ok); > > > > > > return ok; > > > } > > > > > > /************************************************************************************************* > > > * Function Name : ipr_cwmp_sslctxfun > > > * > > > * Description : This is an example of an curl SSL initialisation > > > call back. The callback sets: > > > * a private key and certificate > > > * a trusted ca certificate > > > * a preferred cipherlist > > > * an application verification callback (the function > > > above) > > > * Returns : CURLcode > > > * > > > ***************************************************************************************************/ > > > > > > static CURLcode ipr_cwmp_sslctxfun(void* sslctx, void* parm) > > > { > > > SSL_CTX* ctx = (SSL_CTX *) sslctx ; > > > SSL_CTX_set_cert_verify_callback(ctx, ssl_app_verify_callback, parm); > > > //SSL_CTX_set_cert_verify_callback(ctx, > > > ipr_cwmp_ssl_app_verify_callback, parm); > > > //changed this to supress the warning for ssl prototype of this > > > function > > > return CURLE_OK ; > > > } > > > /***************************************************************************************************/ > > > > > > > > > const char * const urls[NUMT]= { > > > "https://192.168.66.116:8443/acs/AcsServlet" > > > //"https://192.168.16.233:8443/acs/AcsServlet", > > > //"ftp://cool.haxx.se/", > > > //"https://www.cag.se/", > > > //"www.haxx.se" > > > }; > > > //curl_easy_setopt(curl, CURLOPT_SSLCERT,"client-2048.crt"); > > > //curl_easy_setopt(curl, CURLOPT_SSLKEY,"client-2048.key"); > > > > > > static void *pull_one_url(void *url) > > > { > > > struct MemoryStruct header_chunk = {0}; > > > struct curl_slist *slist = NULL; > > > static const char *msg = "Field=1&Field=2&Field=3"; > > > CURL *curl; > > > struct MemoryStruct chunk = {0}; > > > /*SPR 17929 changes start*/ > > > char * str = NULL; > > > char arr[512]; > > > memset(arr, '\0', 512); > > > char * token = NULL; > > > /*SPR 17929 changes end*/ > > > > > > chunk.memory = NULL; /* will be grown as needed by the realloc above > > > */ > > > chunk.size = 0; > > > > > > curl = curl_easy_init(); > > > curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10); > > > //curl_easy_setopt(curl,CURLOPT_RESOLVE, host); > > > curl_easy_setopt(curl, CURLOPT_URL, url); > > > curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1L); > > > /* get verbose debug output please */ > > > curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); > > > curl_easy_setopt(curl, CURLOPT_POST, 1); > > > curl_easy_setopt(curl, CURLOPT_POSTFIELDS,(char *)msg); > > > > > > slist = NULL; > > > slist = curl_slist_append(NULL, "Content-Type: text/xml; > > > UInt8set=utf-8\nSOAPAction:"); > > > curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookie.txt"); > > > curl_easy_setopt(curl, CURLOPT_COOKIE, "cookie.txt"); > > > if (header_chunk.size) > > > { > > > str = strstr((char *)header_chunk.memory, "JSESSIONID="); > > > printf("Extracted JSESSIONID \n"); > > > } > > > > > > if ((header_chunk.size) && (str!= NULL)) > > > { > > > token = strtok(str + 11, ";"); > > > memset(arr,0x00,512); > > > sprintf(arr, "Cookie: JSESSIONID=%s",token); > > > printf("Token has value %s \n",arr); > > > slist = curl_slist_append(slist,arr); > > > printf("Added httpHeader \n"); > > > } > > > curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist); > > > if(0 == header_chunk.size) > > > { > > > curl_easy_setopt(curl, CURLOPT_HEADERDATA,(void *)&header_chunk); > > > } > > > > > > curl_easy_setopt(curl, CURLOPT_SSL_CTX_FUNCTION, ipr_cwmp_sslctxfun); > > > //curl_easy_setopt(curl, CURLOPT_SSL_CTX_FUNCTION, sslctxfun); > > > curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, > > > ipr_cwmp_WriteMemoryCallback); > > > /* we pass our 'chunk' struct to the callback function */ > > > //coverity fix > > > curl_easy_setopt(curl, CURLOPT_WRITEDATA,(void *)&chunk); > > > curl_easy_setopt(curl, > > > CURLOPT_SSLKEY,"./tls_files/enodeb-new.key.pem"); > > > curl_easy_setopt(curl, CURLOPT_SSLCERT,"./tls_files/enodeb.cert.pem"); > > > //curl_easy_setopt(curl, CURLOPT_SSLKEY, g_ipr_cwmp_pClientKeyFile); > > > /* set the file with the certs vaildating the server */ > > > //curl_easy_setopt(curl, CURLOPT_SSLCERT, g_ipr_cwmp_pClientCertFile); > > > /* disconnect if we can't validate server's cert */ > > > curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,1L); > > > curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); > > > curl_easy_setopt(curl,CURLOPT_CAINFO,"./tls_files/ca-chain.cert.pem"); > > > curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,1L); > > > curl_easy_setopt(curl,CURLOPT_MAXREDIRS,5L); > > > curl_easy_setopt(curl,CURLOPT_POSTREDIR,CURL_REDIR_POST_ALL); > > > curl_easy_setopt(curl, CURLOPT_POST, 1); > > > > > > //coverity fix > > > //curl_easy_setopt(curl, CURLOPT_POSTFIELDS,(char *)msg); > > > //curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookie.txt"); > > > //curl_easy_setopt(curl, CURLOPT_COOKIE, "cookie.txt"); > > > curl_easy_setopt(curl, CURLOPT_HTTPAUTH, > > > CURLAUTH_BASIC|CURLAUTH_DIGEST); > > > curl_easy_setopt (curl, CURLOPT_USERNAME > > > ,"BaseStationClass-002488-1114B00001"); > > > curl_easy_setopt (curl, CURLOPT_PASSWORD ,"abcd1234"); > > > // curl_easy_setopt(curl, CURLOPT_SSL_CTX_FUNCTION, > > > ipr_cwmp_sslctxfun) ; > > > > > > > > > > > > curl_easy_perform(curl); /* ignores error */ > > > curl_easy_cleanup(curl); > > > > > > return NULL; > > > } > > > > > > > > > /* > > > int pthread_create(pthread_t *new_thread_ID, > > > const pthread_attr_t *attr, > > > void * (*start_func)(void *), void *arg); > > > */ > > > > > > int main(int argc, char **argv) > > > { > > > pthread_t tid[NUMT]; > > > int i; > > > > > > /* Must initialize libcurl before any threads are started */ > > > curl_global_init(CURL_GLOBAL_ALL); > > > > > > for(i = 0; i< NUMT; i++) { > > > int error = pthread_create(&tid[i], > > > NULL, /* default attributes please */ > > > pull_one_url, > > > (void *)urls[i]); > > > if(0 != error) > > > fprintf(stderr, "Couldn't run thread number %d, errno %d\n", i, > > > error); > > > else > > > fprintf(stderr, "Thread %d, gets %s\n", i, urls[i]); > > > } > > > > > > /* now wait for all threads to terminate */ > > > for(i = 0; i< NUMT; i++) { > > > pthread_join(tid[i], NULL); > > > fprintf(stderr, "Thread %d terminated\n", i); > > > } > > > curl_global_cleanup(); > > > return 0; > > > } > > > > > > > > > On Fri, Oct 1, 2021 at 8:29 PM Daniel Stenberg <dan...@haxx.se> wrote: > > > > > > > > On Fri, 1 Oct 2021, treesa fairy joseph wrote: > > > > > > > > > #0 0x00000000005377c4 in Curl_hash_clean_with_criterium > > > > > (h=0xffff7c0a4d50, > > > > > user=0xffff8b28d970, > > > > > comp=0x4ba604 <hostcache_timestamp_remove>) at hash.c:243 > > > > > 243 hash.c: No such file or directory. > > > > > (gdb) bt > > > > > #0 0x00000000005377c4 in Curl_hash_clean_with_criterium > > > > > (h=0xffff7c0a4d50, > > > > > user=0xffff8b28d970, > > > > > comp=0x4ba604 <hostcache_timestamp_remove>) at hash.c:243 > > > > > > > > This issue shows the typical signs of a threading problem. Make sure > > > > that > > > > your application and threading follow the advice here: > > > > > > > > https://curl.se/libcurl/c/threadsafe.html > > > > > > > > In particular the dont-use-the-same-handle-twice rule. > > > > > > > > If that doesn't help, then I'd advice you to start trying to create a > > > > separate > > > > stand-alone example code that reproduces the problem that you can share > > > > with > > > > us. > > > > > > > > -- > > > > > > > > / daniel.haxx.se > > > > | Commercial curl support up to 24x7 is available! > > > > | Private help, bug fixes, support, ports, new features > > > > | https://curl.se/support.html -- Unsubscribe: https://lists.haxx.se/listinfo/curl-library Etiquette: https://curl.haxx.se/mail/etiquette.html