SPUG: Moose: The 'remove_method' cannot be called on an immutable instance

Michael R. Wolf MichaelRWolf at att.net
Wed Mar 2 15:30:30 PST 2011


I don't know what that message means.  

I don't see anything special about 'get_from_email_address', the reader of the 'from_email_address' attribute in the first file, nor 'get_headers' in the second file.  This problem cropped up a while ago, but went away after I did a 'make realclean'.  Not so, this time.

This problem is showing up in two classes, and they do refer to each other via 'use', so I could see a deadlock condition.  But I don't know how to break that circular compile-time dependency.

Any ideas on where to continue looking or how to think about it?

Thanks,
Michael

Here's the output from 'perl -cw'


The 'remove_method' method cannot be called on an immutable instance at /usr/local/lib/perl5/Class/MOP/Class/Immutable/Trait.pm line 32
	Class::MOP::Class::Immutable::Trait::_immutable_cannot_call('remove_method') called at /usr/local/lib/perl5/Class/MOP/Class/Immutable/Trait.pm line 37
	Class::MOP::Class:::around('CODE(0x8ec5ec0)', 'Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x9737e10)', 'get_from_email_address') called at /usr/local/lib/perl5/Class/MOP/Method/Wrapped.pm line 159
	Class::MOP::Method::Wrapped::__ANON__('Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x9737e10)', 'get_from_email_address') called at /usr/local/lib/perl5/Class/MOP/Method/Wrapped.pm line 89
	Class::MOP::Class::Immutable::Moose::Meta::Class::remove_method('Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x9737e10)', 'get_from_email_address') called at /usr/local/lib/perl5/Class/MOP/Attribute.pm line 386
	Class::MOP::Attribute::__ANON__('get_from_email_address', 'Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x9737e10)') called at /usr/local/lib/perl5/Class/MOP/Attribute.pm line 398
	Class::MOP::Attribute::remove_accessors('Class::MOP::Class::__ANON__::SERIAL::1=HASH(0x976ce08)') called at /usr/local/lib/perl5/Moose/Meta/Attribute.pm line 688
	Moose::Meta::Attribute::remove_accessors('Class::MOP::Class::__ANON__::SERIAL::1=HASH(0x976ce08)') called at /usr/local/lib/perl5/Class/MOP/Class.pm line 423
	Class::MOP::Class::_remove_generated_metaobjects('Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x9737e10)') called at /usr/local/lib/perl5/Class/MOP/Class.pm line 60
	Class::MOP::Class::reinitialize('Class::MOP::Class::Immutable::Moose::Meta::Class', 'Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x9737e10)', 'error_class', 'Moose::Error::Default', 'wrapped_method_metaclass', 'Class::MOP::Method::Wrapped', 'instance_metaclass', 'Moose::Meta::Instance', 'method_metaclass', ...) called at /usr/local/lib/perl5/Moose/Meta/Class.pm line 157
	Moose::Meta::Class::reinitialize('Class::MOP::Class::Immutable::Moose::Meta::Class', 'Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x9737e10)', 'attribute_metaclass', 'Class::MOP::Class::__ANON__::SERIAL::1') called at /usr/local/lib/perl5/Moose/Util/MetaRole.pm line 128
	Moose::Util::MetaRole::_make_new_metaclass('Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x9737e10)', 'HASH(0x9340028)', 'class') called at /usr/local/lib/perl5/Moose/Util/MetaRole.pm line 39
	Moose::Util::MetaRole::apply_metaroles('for', 'Erado::SocialMedia::JournalMessageBuilder', 'class_metaroles', 'HASH(0x9340028)') called at /usr/local/lib/perl5/Moose/Exporter.pm line 627
	Moose::Exporter::__ANON__('MooseX::FollowPBP', 'for_class', 'Erado::SocialMedia::JournalMessageBuilder', 'metaclass', undef, 'meta_name', 'meta') called at /usr/local/lib/perl5/Moose/Exporter.pm line 423
	Moose::Exporter::__ANON__('MooseX::FollowPBP') called at lib/Erado/SocialMedia/JournalMessageBuilder.pm line 21
	Erado::SocialMedia::JournalMessageBuilder::BEGIN() called at lib/Erado/SocialMedia/JournalMessageBuilder.pm line 21
	eval {...} called at lib/Erado/SocialMedia/JournalMessageBuilder.pm line 21
BEGIN failed--compilation aborted at lib/Erado/SocialMedia/JournalMessageBuilder.pm line 21.



The 'remove_method' method cannot be called on an immutable instance at /usr/local/lib/perl5/Class/MOP/Class/Immutable/Trait.pm line 32
	Class::MOP::Class::Immutable::Trait::_immutable_cannot_call('remove_method') called at /usr/local/lib/perl5/Class/MOP/Class/Immutable/Trait.pm line 37
	Class::MOP::Class:::around('CODE(0xa374928)', 'Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0xac3a7d8)', 'get_headers') called at /usr/local/lib/perl5/Class/MOP/Method/Wrapped.pm line 159
	Class::MOP::Method::Wrapped::__ANON__('Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0xac3a7d8)', 'get_headers') called at /usr/local/lib/perl5/Class/MOP/Method/Wrapped.pm line 89
	Class::MOP::Class::Immutable::Moose::Meta::Class::remove_method('Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0xac3a7d8)', 'get_headers') called at /usr/local/lib/perl5/Class/MOP/Attribute.pm line 386
	Class::MOP::Attribute::__ANON__('get_headers', 'Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0xac3a7d8)') called at /usr/local/lib/perl5/Class/MOP/Attribute.pm line 398
	Class::MOP::Attribute::remove_accessors('Class::MOP::Class::__ANON__::SERIAL::1=HASH(0xac6d710)') called at /usr/local/lib/perl5/Moose/Meta/Attribute.pm line 688
	Moose::Meta::Attribute::remove_accessors('Class::MOP::Class::__ANON__::SERIAL::1=HASH(0xac6d710)') called at /usr/local/lib/perl5/Class/MOP/Class.pm line 423
	Class::MOP::Class::_remove_generated_metaobjects('Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0xac3a7d8)') called at /usr/local/lib/perl5/Class/MOP/Class.pm line 60
	Class::MOP::Class::reinitialize('Class::MOP::Class::Immutable::Moose::Meta::Class', 'Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0xac3a7d8)', 'error_class', 'Moose::Error::Default', 'wrapped_method_metaclass', 'Class::MOP::Method::Wrapped', 'instance_metaclass', 'Moose::Meta::Instance', 'method_metaclass', ...) called at /usr/local/lib/perl5/Moose/Meta/Class.pm line 157
	Moose::Meta::Class::reinitialize('Class::MOP::Class::Immutable::Moose::Meta::Class', 'Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0xac3a7d8)', 'attribute_metaclass', 'Class::MOP::Class::__ANON__::SERIAL::1') called at /usr/local/lib/perl5/Moose/Util/MetaRole.pm line 128
	Moose::Util::MetaRole::_make_new_metaclass('Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0xac3a7d8)', 'HASH(0xa806db0)', 'class') called at /usr/local/lib/perl5/Moose/Util/MetaRole.pm line 39
	Moose::Util::MetaRole::apply_metaroles('for', 'Erado::SocialMedia::JournalMessageBuilder::InnerMessage', 'class_metaroles', 'HASH(0xa806db0)') called at /usr/local/lib/perl5/Moose/Exporter.pm line 627
	Moose::Exporter::__ANON__('MooseX::FollowPBP', 'for_class', 'Erado::SocialMedia::JournalMessageBuilder::InnerMessage', 'metaclass', undef, 'meta_name', 'meta') called at /usr/local/lib/perl5/Moose/Exporter.pm line 423
	Moose::Exporter::__ANON__('MooseX::FollowPBP') called at lib/Erado/SocialMedia/JournalMessageBuilder/InnerMessage.pm line 26
	Erado::SocialMedia::JournalMessageBuilder::InnerMessage::BEGIN() called at lib/Erado/SocialMedia/JournalMessageBuilder/InnerMessage.pm line 26
	eval {...} called at lib/Erado/SocialMedia/JournalMessageBuilder/InnerMessage.pm line 26
BEGIN failed--compilation aborted at lib/Erado/SocialMedia/JournalMessageBuilder/InnerMessage.pm line 26.
-- 
Michael R. Wolf
    All mammals learn by playing!
        MichaelRWolf at att.net





More information about the spug-list mailing list