diff --git a/mod/box/box_lua.m b/mod/box/box_lua.m
index 6ad5bfe2707641dcf9845114aa53765b3911b950..f558a470ca80b7923113abdeaeb386b4e9439227 100644
--- a/mod/box/box_lua.m
+++ b/mod/box/box_lua.m
@@ -656,7 +656,7 @@ static const struct luaL_reg lbox_iterator_meta[] = {
 + (PortLua *) alloc
 {
 	size_t sz = class_getInstanceSize(self);
-	id new = palloc(fiber->gc_pool, sz);
+	id new = palloca(fiber->gc_pool, sz, sizeof(void *));
 	object_setClass(new, self);
 	return new;
 }
diff --git a/mod/box/request.m b/mod/box/request.m
index 8f2ccdb67e3d63c93ce25b93abe07dab6f224406..942fcf2a289a7b24409c8ab15454f794549637af 100644
--- a/mod/box/request.m
+++ b/mod/box/request.m
@@ -939,7 +939,7 @@ do_update_ops(struct update_cmd *cmd, struct tuple *new_tuple)
 + (Request *) alloc
 {
 	size_t sz = class_getInstanceSize(self);
-	id new = palloc(fiber->gc_pool, sz);
+	id new = palloca(fiber->gc_pool, sz, sizeof(void *));
 	object_setClass(new, self);
 	return new;
 }
diff --git a/src/exception.m b/src/exception.m
index 35f249b944c8ae6631143ed68eb4f56fdfaa5e9e..8a50bbde7a51087631a292b4483210b897282c50 100644
--- a/src/exception.m
+++ b/src/exception.m
@@ -42,7 +42,8 @@
 	if (e != nil && class_getInstanceSize(self) <= sz) {
 		object_setClass(e, self);
 	} else {
-		object_dispose(e);
+		if (e != nil)
+			object_dispose(e);
 		e = class_createInstance(self, 0);
 		sz = class_getInstanceSize(self);
 	}