Berkeley CSUA MOTD:Entry 38255
Berkeley CSUA MOTD
 
WIKI | FAQ | Tech FAQ
http://csua.com/feed/
2025/05/25 [General] UID:1000 Activity:popular
5/25    

2005/6/23-25 [Computer/SW/Languages/C_Cplusplus] UID:38255 Activity:low
6/22    Technical question:  My friend is trying to program a
        single-threaded signal based server.  He's using the icc compiler
        on 64-bit linux.  However, the following problem comes up.  The
        server is working and calls malloc.  Malloc grabs the allocation
        mutex (thread-safe!), then a signal comes in.  The signal
        interrupts malloc and calls the handler function.  The handler
        function calls malloc, deadlock.  Any idea what can be done where
        to avoid deadlock?
        \_ what, besides the obvious 'dont use malloc in the interrupt' ?
           \_ Yeah, besides that.  Since I'm not writing the code, I'm not
              sure, but I guess that option is undesireable.
        \_ I reccomend the 'don't call malloc in the handler' but here's an
           alternate hack:  Replace both calls to malloc with calls to a new
           myMalloc().  myMalloc keeps a fixed-size buffer and its own mutex to
           controll calling malloc itself.  When myMalloc is called and the
           mutex is not free, it returns a pointer to somewhere in the fixed
           buffer and reduces the bytes free in the preallocated buffer.  When
           myMalloc is called and the mutex is free, it calls malloc normally,
           then checks if the preallocated buffer is 'too small' and if so
           performs a realloc on it.
           Two problems with this are:  You need an upper bound to how much
           memory the handler(s) will need to malloc, and if they want to
           free the memory too then myMalloc really needs to keep enough
           preallocated buffers equal to the maximum number of myMalloc calls
           you will see between times the mutex is freed.
        \_ What about something simple like writing a function that sets all
           signals to SIG_IGN, then calls malloc, then sets all the signals
           back to SIG_DFL?
           back to your signal handler?
2025/05/25 [General] UID:1000 Activity:popular
5/25    

You may also be interested in these entries...
2014/1/14-2/5 [Computer/SW/Languages/C_Cplusplus] UID:54763 Activity:nil
1/14    Why is NULL defined to be "0" in C++ instead of "((void *) 0)" like in
        C?  I have some overloaded functtions where one takes an integer
        parameter and the other a pointer parameter.  When I call it with
        "NULL", the compiler matches it with the integer version instead of
        the pointer version which is a problem.  Other funny effect is that
        sizeof(NULL) is different from sizeof(myPtr).  Thanks.
	...
2011/3/7-4/20 [Computer/SW/Languages/C_Cplusplus] UID:54056 Activity:nil
3/7     I have a C question.  I have the following source code in two identical
        files t.c and t.cpp:
                #include <stdlib.h>
                int main(int argc, char *argv[]) {
                  const char * const * p1;
                  const char * * p2;
	...
2009/7/21-24 [Computer/SW/Languages/Java] UID:53168 Activity:moderate
7/20    For those who care btw, it looks like eclipse is now A Standard Tool
        at UCB ugrad cs, probably replaced emacs.  Furthermore, people get
        angry at seeing Makefiles, (since eclispe takes care of that).  I
        guess it's just a sign of the times.
        \_ The more people at my work use eclipse the less the code is
           managable in emacs.  I'm not sure which application's fault
	...
2007/3/9-11 [Computer/SW/Languages/C_Cplusplus] UID:45917 Activity:nil 54%like:45865
3/9     When I start trn in a shell, I always get this:
        "*** glibc detected *** malloc(): memory corruption: 0x08091600 ***
        Abort"
        But when I run trn inside the shell buffer in emacs, the problem
        doesn't happen.  Any idea?  Thanks.
	...
2007/3/4-6 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Mail, Computer/HW/Memory] UID:45865 Activity:nil 54%like:45917
3/4     trn crashes on me upon startup:
        "*** glibc detected *** malloc(): memory corruption: 0x08091618 ***
        Abort"
        Any idea?  Thanks.
	...
2006/1/25-27 [Computer/HW/Memory] UID:41522 Activity:nil
1/25    I'm working on a program in windows which is having memory problems.
        When I allocate memory with new or malloc, it seems to reserve more
        memory than I request (using VM Valiator to monitor this).  Even if I
        delete the memory there is still a "reserved" chunk that doesn't seem
        to ever get used by other code.  I'm using VC++ 6 btw.  Anyone have an
        idea of what might be going on?
	...
2005/9/9-13 [Computer/SW/OS/OsX] UID:39595 Activity:low
9/9     Does OSX gcc still not support weak symbol definitions?  ie, I
        can't redefine malloc or new? (In this case actually I'm defining
        something as weak, either with #pragma weak or
        __attribute__((weak)) but OSX doesn't seem to support either!)
        -jrleek
        \- hello, have you tried __attribute__((weak_import)). what gcc
	...
2005/6/24-27 [Computer/SW/SpamAssassin] UID:38285 Activity:nil
6/24    In my procmail log file, it says:
                csh in malloc(): warning: recursive call
                Out of memory.
        What is the meaning of this?
        \_ helps if you show us your .procmailrc
          \_ It's hundreds of lines long.  I was thinking it was
	...
2005/2/15-16 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Compilers] UID:36174 Activity:moderate
2/15    Technical question:  we have a memory leak in our C code, we think,
        but it's not the sort of memory leak where the memory's unreferenced.
        What we'd like to do is sort of a poor-man's profile, we want
        to know who calls our memory allocator "New"...  Sorta like a stack
        trace.  Using an actual profiler is sort of difficult 'cause it's
        a parallel application.  Thanks,  --peterm
	...
2005/1/24-26 [Computer/SW/Unix] UID:35874 Activity:low
1/24    How do I find out the maximum allowable process size on lesbians?
        \_ malloc
           \_ uh, how about finding out without getting squished?
        \_ Run "limit".
[ deleting bitch ]
           \_ limit is a csh thing.
	...
2004/12/8-9 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages] UID:35217 Activity:kinda low
12/8    When people say null string or empty string in C, does it mean a char
        pointer that's NULL, or a char array whose first char is '\0'?  Thanks.
        \_ Both, because it's essentially the same. However, I think they
           probably mean the latter. I assume you mean a pointer pointing
           to NULL, and not a pointer which is NULL, which makes no real
           sense.
	...
2004/12/7-8 [Computer/SW/Languages/C_Cplusplus, Computer/SW/Languages] UID:35200 Activity:low
12/7    Optimization time: gprof shows 310k calls to a certain constructor
        (a very simple, very important object that is often stack-allocated
        into large arrays- eg "MyObject msgs[1000];").  Rather than calling
        the constructor 1000 times, is there a way to have a special array ctor
        that's called (once) and zeroes out the array en masse?  TIA.
        \_ Geezus, why are you constructing 310k objects? Make a static array
	...