Hello, Thank you for helping me out with this matter. On Wed, Oct 14, 2020 at 6:40 AM Pablo Tejada <[email protected]> wrote:
> Hello Nicolas, > > I still can't believe you have not given up on APE yet. You are probably > the only person keeping APE alive in the wild. When I first joined this > project the server was very unstable so it is very hard to believe someone > is still relying on this server unless they are running a really old > version which is somewhat stable or are running a custom build like > yourself. > > I remember when I first picked up APE, at first glance and for proof of > concepts the technology looked great until you tried to do something more > serious. Then all of its issues and shortcomings become clearly apparent. > Having to constantly restart the server to keep a somewhat stable service > is far from ideal. > > What site or business are you running, was it a gaming or bidding site? > Anyhow, I've been looking to do some additional coding in my spare time > since I don't have a good project to work of my own. Let me know if you > need help coming up with a strategy to migrate your service to something > like Pusher, Firebase or Socket.io > > On Tue, Oct 13, 2020 at 2:25 PM Alok Vad <[email protected]> wrote: > >> Hi, >> Thank you for your help. >> >> On Tue, Oct 13, 2020 at 12:15 PM Nicolas <[email protected]> wrote: >> >>> I know this is a very old thread and not many of you are still around. >>> But let me try my luck once more. >>> >>> I can confirm that my APE server sometimes crashes a few hours after >>> being restarted. >>> >>> Oct 13 01:21:03 server56405 kernel: [8981559.624862] traps: >>> aped_2[19153] general protection ip:418dce sp:7ffeff989060 error:0 in >>> aped_2[400000+2a000] >>> >>> I had recompiled the code a few years ago (to increase memory) so I >>> guess I have got the last corrections. >>> The error is 0, pointing to a division by 0. Which I find a bit strange >>> here. I don't see any division in the code below. >>> The ip given above leads to ape_disconnect() function from servers.c. >>> And more precisely to the line: >>> if (co->fd == sub->client->fd) {... >>> I suspect the error does not come from this if statement, but rather the >>> inside of the if. >>> It could be the call to http_headers_free() >>> Or most likely the line: deluser(sub->user, g_ape); >>> >>> I don't expect a full resolution of the case and will not recompile a >>> modified version of the code. But here are a few questions I have. If you >>> have any clue for any of them, let me know! >>> 1) From the general protection error line, is there any way to be more >>> precise as to where the general protection exactly kicks in? Can we know >>> if it is on the if statement or below? Could it be in an inner function? >>> 2) My best guess is that the problem is related to deleting users or >>> sub-users. And it looks to me that users that were connected before the >>> program was restarted find a way to interact with the new instance and make >>> it crash (like a non-existent user asks to logout and boom!). >>> Do you have any clue how this can be possible? >>> If I knew that, I could maybe modify my client so that it does not send >>> a request that makes a new instance crash. >>> >>> Some of the C code below. >>> >>> Many thanks! >>> >>> >>> static void ape_disconnect(ape_socket *co, acetables *g_ape){ >>> subuser *sub = (subuser *)(co->attach); >>> if (sub != NULL) { >>> if (sub->wait_for_free == 1) { >>> free(sub); >>> co->attach = NULL; >>> return; >>> } >>> // THIS IS WHERE THE GENERAL PROTECTION KICKS IN. >>> // THIS IS WHERE THE GENERAL PROTECTION KICKS IN. >>> // THIS IS WHERE THE GENERAL PROTECTION KICKS IN. >>> // THIS IS WHERE THE GENERAL PROTECTION KICKS IN. >>> // THIS IS WHERE THE GENERAL PROTECTION KICKS IN. ------------>>> >>> if (co->fd == sub->client->fd) { >>> >>> <<<<<<<<<<------------------------------------------------------------------------- >>> sub->headers.sent = 0; >>> sub->state = ADIED; >>> http_headers_free(sub->headers.content); >>> sub->headers.content = NULL; >>> if (sub->user != NULL) { >>> if (sub->user->istmp) { >>> deluser(sub->user, g_ape); >>> co->attach = NULL; >>> } >>> } >>> } >>> } >>> } >>> >>> void http_headers_free(http_headers_response *headers){ >>> struct _http_headers_fields *fields; >>> if (headers == NULL) {return;} >>> fields = headers->fields; >>> while(fields != NULL) { >>> struct _http_headers_fields *tmpfields = fields->next; >>> free(fields->value.val); >>> free(fields); >>> fields = tmpfields; >>> } >>> free(headers); >>> } >>> >>> void deluser(USERS *user, acetables *g_ape){ >>> if (user == NULL) { >>> return; >>> } >>> left_all(user, g_ape); >>> FIRE_EVENT_NULL(deluser, user, user->istmp, g_ape); >>> /* kill all users connections */ >>> clear_subusers(user, g_ape); >>> hashtbl_erase(g_ape->hSessid, user->sessid); >>> g_ape->nConnected--; >>> if (user->prev == NULL) { >>> g_ape->uHead = user->next; >>> } else { >>> user->prev->next = user->next; >>> } >>> if (user->next != NULL) { >>> user->next->prev = user->prev; >>> } >>> clear_sessions(user); >>> clear_properties(&user->properties); >>> destroy_pipe(user->pipe, g_ape); >>> /* TODO Add Event */ >>> free(user); >>> } >>> >>> >>> >>> void left_all(USERS *user, acetables *g_ape){ >>> CHANLIST *list, *tList; >>> if (user == NULL) { >>> return; >>> } >>> list = user->chan_foot; >>> while (list != NULL) { >>> tList = list->next; >>> left(user, list->chaninfo, g_ape); >>> list = tList; >>> } >>> } >>> >>> >>> >>> void clear_subusers(USERS *user, acetables *g_ape){ >>> while (user->subuser != NULL) { >>> delsubuser(&(user->subuser), g_ape); >>> } >>> } >>> >>> >>>> >>>> -- >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "APE Project" group. >>> To post to this group, send email to [email protected] >>> To unsubscribe from this group, send email to >>> [email protected] >>> For more options, visit this group at >>> http://groups.google.com/group/ape-project?hl=en >>> --- >>> APE Project (Ajax Push Engine) >>> Official website : http://www.ape-project.org/ >>> Git Hub : http://github.com/APE-Project/ >>> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "APE Project" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/ape-project/051fe946-6512-4486-92b7-9ecdcbe1cba9n%40googlegroups.com >>> <https://groups.google.com/d/msgid/ape-project/051fe946-6512-4486-92b7-9ecdcbe1cba9n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- >> -- >> You received this message because you are subscribed to the Google >> Groups "APE Project" group. >> To post to this group, send email to [email protected] >> To unsubscribe from this group, send email to >> [email protected] >> For more options, visit this group at >> http://groups.google.com/group/ape-project?hl=en >> --- >> APE Project (Ajax Push Engine) >> Official website : http://www.ape-project.org/ >> Git Hub : http://github.com/APE-Project/ >> >> --- >> You received this message because you are subscribed to the Google Groups >> "APE Project" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/ape-project/CAOx4vSSg9R%2BNQa1i8uz6BOZ3mw%3DYh_kQnWMCbW5bDjagt%2B_PJA%40mail.gmail.com >> <https://groups.google.com/d/msgid/ape-project/CAOx4vSSg9R%2BNQa1i8uz6BOZ3mw%3DYh_kQnWMCbW5bDjagt%2B_PJA%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- > -- > You received this message because you are subscribed to the Google > Groups "APE Project" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/ape-project?hl=en > --- > APE Project (Ajax Push Engine) > Official website : http://www.ape-project.org/ > Git Hub : http://github.com/APE-Project/ > > --- > You received this message because you are subscribed to the Google Groups > "APE Project" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/ape-project/CAN64Xc4Kfn0Q8C7UTw6At21BSxRH%3DPF4T22AcyODqewDtKKGDw%40mail.gmail.com > <https://groups.google.com/d/msgid/ape-project/CAN64Xc4Kfn0Q8C7UTw6At21BSxRH%3DPF4T22AcyODqewDtKKGDw%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- -- You received this message because you are subscribed to the Google Groups "APE Project" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/ape-project?hl=en --- APE Project (Ajax Push Engine) Official website : http://www.ape-project.org/ Git Hub : http://github.com/APE-Project/ --- You received this message because you are subscribed to the Google Groups "APE Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ape-project/CAOx4vSTfxx%2Bjsg3ntm7nukLn3Tmyo_ZF4wohVmPfx%3DXpAbsOBQ%40mail.gmail.com.
