On 8/04/2022, at 6:45 AM, Adrian Du?a <dusa.adrian at gmail.com> wrote:
Dear Rui,
Thank you so much for the response, that's a very good observation but I've
just tested and results in the same errors, unfortunately.
I have now changed all malloc()s to R_Calloc(), in the latest commit:
https://github.com/dusadrian/QCAtest/blob/main/src/CCubes.c
And yet:
https://builder.r-hub.io/status/QCA_3.16.tar.gz-e652c850de7e51c4cc1311fafe44f986
There must be something obvious I am missing, but my C knowledge is limited
and already stretched out...
Best wishes,
Adrian
On Thu, 7 Apr 2022 at 18:49, Rui Barradas <ruipbarradas at sapo.pt> wrote:
Hello,
Tomas is right, there are many memory operations allocating with malloc
and freeing with R_Free:
line: variables - operation
55: p_pichart - malloc
336: p_pichart - R_Free
236: copy_implicants - malloc
260: copy_implicants - R_Free
240: p_tempic - malloc
262: p_tempic - R_Free
And there are more cases like these. For what I've seen, the frequent
(unique?) case is malloc/R_Free.
Hope this helps,
Rui Barradas
?s 09:59 de 07/04/2022, Tomas Kalibera escreveu:
On 4/7/22 10:32, Adrian Du?a wrote:
On Thu, 7 Apr 2022 at 10:32, Tomas Kalibera <tomas.kalibera at gmail.com>
wrote:
[...]
And what are the errors you run into? On which platforms, under
circumstances, etc? It would be much easier to give advice knowing
that.
In principle, one issue you may run into when switching allocators
that you accidentally end up freeing by a different allocator from
the
one used to allocate it. It is common on Windows but can in
happen elsewhere as well.
Also by a slightly different heap layout or different allocator
implementation you may wake up bugs in the program not seen
previously
(use after free, invalid memory accesses, etc)
That is something I do not know yet, since the only information the
server gives is this:
I'll probably end up debugging the C code, but since the only
difference is using Free() vs free() on exactly the same objects, I
suspected a mis-usage of the R commands.
The same setup passes with no problems on my local MacOS, but the
errors still seem to occur on the Windows setup from r-hub.
This is very likely because you are freeing memory allocated by calloc()
(or something else but not R_Calloc() in your program) using R_Free() or
memory allocated using R_Calloc() by using free() in your program.
I would recommend checking the source code manually for that.
It is not surprising that the problem doesn't appear on other platforms
where the allocators happen to be the same.
Best
Tomas
[[alternative HTML version deleted]]