Branch: refs/heads/davem/newx_aux
  Home:   https://github.com/Perl/perl5
  Commit: c3ebd26582351105a25df19e205678ecc87c1708
      
https://github.com/Perl/perl5/commit/c3ebd26582351105a25df19e205678ecc87c1708
  Author: David Mitchell <da...@iabyn.com>
  Date:   2024-03-17 (Sun, 17 Mar 2024)

  Changed paths:
    M class.c
    M op.c

  Log Message:
  -----------
  OP_METHSTART, OP_INITFIELD: use shared mem for aux

Allocate the aux structure for these two ops using
PerlMemShared_malloc() rather then Newx().

OPs (and auxiliary structures) are shared between threads, and there's
no guarantee that an OP will be freed by the same thread as the one
which created it. Some OSes (Windows IIRC) get upset if memory is
malloc()ed and free()d by different threads, since each thread has a
separate malloc() pool.

Hence we usually use PerlMemShared_malloc()/_free() to allocate such
shared structs. These two recently-added ops were just using Newx().

This commit fixes them.

No tests failures as far as I'm aware - this is more a theoretical thing
where one thread compiles some code, creates a child, then exits. The
child lives on, and when the child finally exits, the aux struct is
freed to the wrong pool.



To unsubscribe from these emails, change your notification settings at 
https://github.com/Perl/perl5/settings/notifications

Reply via email to