ElectricFence Exiting: mprotect() failed: Cannot allocate memory - Embedded

This is a discussion on ElectricFence Exiting: mprotect() failed: Cannot allocate memory - Embedded ; David Schwartz writes: > On Oct 15, 6:35*am, John Reiser wrote: > >> #include >> >> char *f(a) >> { >> * * * * return 0; >> >> } >> >> main() >> { >> * * * * ...

+ Reply to Thread
Page 2 of 2 FirstFirst 1 2
Results 21 to 24 of 24

Thread: ElectricFence Exiting: mprotect() failed: Cannot allocate memory

  1. Re: ElectricFence Exiting: mprotect() failed: Cannot allocate memory

    David Schwartz writes:
    > On Oct 15, 6:35*am, John Reiser wrote:
    >
    >> #include
    >>
    >> char *f(a)
    >> {
    >> * * * * return 0;
    >>
    >> }
    >>
    >> main()
    >> {
    >> * * * * char *p = f(10);
    >> * * * * if (NULL==p) {
    >> * * * * * * * * printf("f(10) is NULL.\n");
    >> * * * * * * * * /* fflush(stdout); * *THE FIX */
    >> * * * * }
    >> * * * * return *p;}

    >
    > This is still not very good. What if 'printf' needs to allocate memory
    > to do its job? What if 'fflush' does? In an error handler like this,
    > you are better off calling 'write' directly.


    Another option is to force a segfault, ie assign to the area when the
    pointer is null. The values of the various CPU registers, especially
    the program counter, can then (in combination with a disasembler) be
    used to determine the location of the crash and hence, the condition
    at the time of the test.

  2. Re: ElectricFence Exiting: mprotect() failed: Cannot allocate memory

    I am trying to use DUMA to find the problem and am getting the
    following error when I try to link to the DUMA library:


    # LD_PRELOAD=/lib/libduma.a /bin/snmpd &
    # ERROR: ld.so: object '/lib/libduma.a' from LD_PRELOAD cannot be
    preloaded: ignored.

    What can cause this error when using LD_PRELOAD?

  3. Re: ElectricFence Exiting: mprotect() failed: Cannot allocate memory

    > # LD_PRELOAD=/lib/libduma.a /bin/snmpd &
    > # ERROR: ld.so: object '/lib/libduma.a' from LD_PRELOAD cannot be
    > preloaded: ignored.


    Only an executable object (.e_type is ET_DYN or ET_EXEC) can be pre-loaded.
    An archive library (*.a) that contains ET_REL files cannot be pre-loaded.

    --

  4. Re: ElectricFence Exiting: mprotect() failed: Cannot allocatememory

    Bill writes:

    > I am trying to use DUMA to find the problem and am getting the
    > following error when I try to link to the DUMA library:


    It amazes me that in all this time you never managed to answer a
    simple question: is the crash *in* malloc, or is it in your own code?

    You are continuing to debug this as if there is malloc corruption,
    and this will prove futile if the crash is (as I suspect) in your
    own code instead.

    > # LD_PRELOAD=/lib/libduma.a /bin/snmpd &
    > # ERROR: ld.so: object '/lib/libduma.a' from LD_PRELOAD cannot be
    > preloaded: ignored.


    You can only preload shared libraries.

    Besides, reading man page for libduma, I see that it uses *exact*
    same strategy as efence: a guard page after every allocation.

    So, once you manage to build a shared libduma.so, and preload it;
    it will most likely fail just like efence did, because the overhead
    of guard pages is too great for majority of real-world (non-toy)
    applications.

    Cheers,
    --
    In order to understand recursion you must first understand recursion.
    Remove /-nsp/ for email.

+ Reply to Thread
Page 2 of 2 FirstFirst 1 2