Skip to content

uv__queue_done: Assertion #523

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
dreamyzhang opened this issue Mar 7, 2017 · 2 comments
Closed

uv__queue_done: Assertion #523

dreamyzhang opened this issue Mar 7, 2017 · 2 comments

Comments

@dreamyzhang
Copy link

dreamyzhang commented Mar 7, 2017

Question 1:

It would be coredump when run some time. as follows:
node: src/threadpool.c:252: uv__queue_done: Assertion `(((const QUEUE ) (&(req->loop)->active_reqs) == (const QUEUE ) ((QUEUE **) &(((&(req->loop)->active_reqs))[0]))) == 0)' failed.

Question 2:

the same node version 6.9. when installed by nvm will coredump like #485.

@dreamyzhang
Copy link
Author

dreamyzhang commented Mar 8, 2017

for Question2

as example : thosttraderapi.so is static linking SSL and I can not do anything for thosttraderapi.so , and the node that installed by nvm also static linking SSL. This led to the question coredump. How can I do for solove this question?

[ops@smartwindev linux_api_trade_6.3.6]$ nm thosttraderapi.so | grep SSL | more
00000000001dcac0 T d2i_SSL_SESSION
000000000020c4a0 T DH_OpenSSL
000000000027a810 T DSA_OpenSSL
000000000027eea0 T ECDH_OpenSSL
000000000027cd90 T ECDSA_OpenSSL
00000000001ded60 T ERR_load_SSL_strings
000000000011ece0 t _GLOBAL__I_SSL_NETWORK_NAME
00000000001de060 T i2d_SSL_SESSION
000000000021ce20 T OPENSSL_add_all_algorithms_noconf
000000000021ce40 T OpenSSL_add_all_ciphers
000000000021d5b0 T OpenSSL_add_all_digests
0000000000243a40 T OPENSSL_asc2uni
00000000001f9ab0 T OPENSSL_atomic_add
00000000001f9c50 T OPENSSL_cleanse
00000000001f6910 t OPENSSL_cpuid_setup
00000000001f68f0 T OpenSSLDie
00000000001f9910 T OPENSSL_DIR_end
00000000001f9970 T OPENSSL_DIR_read
000000000029f320 T OPENSSL_gmtime
000000000029f040 T OPENSSL_gmtime_adj
00000000001f67e0 T OPENSSL_ia32cap_loc
00000000007ca570 b OPENSSL_ia32cap_P
00000000001f9ae0 T OPENSSL_ia32_cpuid
00000000001f9d20 T OPENSSL_ia32_rdrand
00000000001f9a90 T OPENSSL_init
00000000001f67f0 T OPENSSL_isservice
00000000007c6da8 B OPENSSL_NONPIC_relocated
00000000001f9ad0 T OPENSSL_rdtsc

@dreamyzhang
Copy link
Author

dreamyzhang commented Mar 9, 2017

for Question1

static void uv__queue_done(struct uv__work* w, int err) {
  uv_work_t* req;                                        
  req = container_of(w, uv_work_t, work_req);            
  uv__req_unregister(req->loop, req);                    
  if (req->after_work_cb == NULL)                        
    return;                                                                                          
  req->after_work_cb(req, err);                          
}                                                        
#define uv__req_unregister(loop, req)           
  do {                                          
    assert(uv__has_active_reqs(loop));          
    QUEUE_REMOVE(&(req)->active_queue);         
  }                                             
  while (0)

#define uv__has_active_reqs(loop)            
  (QUEUE_EMPTY(&(loop)->active_reqs) == 0) 

#define QUEUE_EMPTY(q)                                                  
  ((const QUEUE *) (q) == (const QUEUE *) QUEUE_NEXT(q))                

I tried to remove the assert, recompile node , and it is excute normally. But why is this so? and what can I do for support all the @node.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants