Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 Nov 2012 19:16:58 +0200
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        sig6247 <sig6247@gmail.com>
Cc:        freebsd-current@freebsd.org, fs@freebsd.org
Subject:   Re: clang compiled kernel panic when mounting zfs root on i386
Message-ID:  <20121126171658.GD3013@kib.kiev.ua>
In-Reply-To: <50b37d46.8584440a.735c.ffffb4e6@mx.google.com>
References:  <50b37d46.8584440a.735c.ffffb4e6@mx.google.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--maH1Gajj2nflutpK
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Mon, Nov 26, 2012 at 06:31:34AM -0800, sig6247 wrote:
>=20
> Hi,
>=20
> Just checked out r243529, this only happens when the kernel is compiled
> by clang, and only on i386, either recompiling the kernel with gcc or
> booting from a UFS root works fine. Is it a known problem?
It looks like that clang uses more stack than gcc, and zfs makes quite
deep call chains.

It would be a waste, generally, to increase the init process kernel
stack size only to pacify zfs. And I suspect that it would not help
in the similar situations when the same procedure initiated for non-root
mounts.

>=20
> Thanks,
>=20
> ----------------------------------------------------------------------
> WARNING: WITNESS option enabled, expect reduced performance.
> Trying to mount root from zfs:zroot []...
>=20
> Fatal double fault:
> eip =3D 0xc0adc37d
> esp =3D 0xc86bffc8
> ebp =3D 0xc86c003c
> cpuid =3D 1; apic id =3D 01
> panic: double fault
> cpuid =3D 1
> KDB: enter: panic
> [ thread pid 1 tid 100002 ]
> Stopped at      kdb_enter+0x3d: movl    $0,kdb_why
> db> bt
> Tracing pid 1 tid 100002 td 0xc89efbc0
> kdb_enter(c1064aa4,c1064aa4,c10b806f,c139e3b8,f5eacada,...) at kdb_enter+=
0x3d
> panic(c10b806f,1,1,1,c86c003c,...) at panic+0x14b
> dblfault_handler() at dblfault_handler+0xab
> --- trap 0x17, eip =3D 0xc0adc37d, esp =3D 0xc86bffc8, ebp =3D 0xc86c003c=
 ---
> witness_checkorder(c1fd7508,9,c109df18,7fa,0,...) at witness_checkorder+0=
x37d
> __mtx_lock_flags(c1fd7518,0,c109df18,7fa,c135d918,...) at __mtx_lock_flag=
s+0x87
> uma_zalloc_arg(c1fd66c0,0,1,4d3,c86c0110,...) at uma_zalloc_arg+0x605
> vm_map_insert(c1fd508c,c13dfc10,bb1f000,0,cba1e000,...) at vm_map_insert+=
0x499
> kmem_back(c1fd508c,cba1e000,1000,3,c86c01d4,...) at kmem_back+0x76
> kmem_malloc(c1fd508c,1000,3) at kmem_malloc+0x250
> page_alloc(c1fd1d80,1000,c86c020b,3,c1fd1d80,...) at page_alloc+0x27
> keg_alloc_slab(103,4,c109df18,870,cb99ef6c,...) at keg_alloc_slab+0xc3
> keg_fetch_slab(103,c1fd1d80,cb99ef6c,c1fc8230,c86c02c0,...) at keg_fetch_=
slab+0xe2
> zone_fetch_slab(c1fd1d80,c1fd0480,103,826,0,...) at zone_fetch_slab+0x43
> uma_zalloc_arg(c1fd1d80,0,102,3,2,...) at uma_zalloc_arg+0x3f2
> malloc(4c,c1686100,102,c86c0388,c173d09a,...) at malloc+0xe9
> zfs_kmem_alloc(4c,102,cb618820,c89efbc0,cb618820,...) at zfs_kmem_alloc+0=
x20
> vdev_mirror_io_start(cb8218a0,10,cb8218a0,1,0,...) at vdev_mirror_io_star=
t+0x14a
> zio_vdev_io_start(cb8218a0,c89efbc0,0,cb8218a0,c86c0600,...) at zio_vdev_=
io_start+0x228
> zio_execute(cb8218a0,cb618000,cba1b640,cb900000,400,...) at zio_execute+0=
x106
> spa_load_verify_cb(cb618000,0,cba1b640,cb884b40,c86c0600,...) at spa_load=
_verify_cb+0x89
> traverse_visitbp(cb884b40,cba1b640,c86c0600,c86c0ba0,0,...) at traverse_v=
isitbp+0x29f
> traverse_dnode(cb884b40,0,0,8b,0,...) at traverse_dnode+0x92
> traverse_visitbp(cb884bb8,cba07200,c86c0890,cb884bf4,c16ce7e0,...) at tra=
verse_visitbp+0xe47
> traverse_visitbp(cb884bf4,cb9bf840,c86c0968,c86c0ba0,0,...) at traverse_v=
isitbp+0xf32
> traverse_dnode(cb884bf4,0,0,0,0,...) at traverse_dnode+0x92
> traverse_visitbp(0,cb618398,c86c0b50,2,cb9f1c78,...) at traverse_visitbp+=
0x96d
> traverse_impl(0,0,cb618398,3e1,0,...) at traverse_impl+0x268
> traverse_pool(cb618000,3e1,0,d,c1727830,...) at traverse_pool+0x79
> spa_load(0,1,c86c0ec4,1e,0,...) at spa_load+0x1dde
> spa_load(0,0,c13d8c94,1,3,...) at spa_load+0x11a5
> spa_load_best(0,ffffffff,ffffffff,1,c0adc395,...) at spa_load_best+0x71
> spa_open_common(c17e0e1e,0,0,c86c1190,c16f5a1c,...) at spa_open_common+0x=
11a
> spa_open(c86c1078,c86c1074,c17e0e1e,c135d918,c1fd7798,...) at spa_open+0x=
27
> dsl_dir_open_spa(0,cb770030,c17e11b1,c86c11f8,c86c11f4,...) at dsl_dir_op=
en_spa+0x6c
> dsl_dataset_hold(cb770030,cb613800,c86c1240,cb613800,cb613800,...) at dsl=
_dataset_hold+0x3a
> dsl_dataset_own(cb770030,0,cb613800,c86c1240,c1684e30,...) at dsl_dataset=
_own+0x21
> dmu_objset_own(cb770030,2,1,cb613800,c86c1290,...) at dmu_objset_own+0x2a
> zfsvfs_create(cb770030,c86c13ac,c17ee05d,681,0,...) at zfsvfs_create+0x4c
> zfs_mount(cb78ed20,c17f411c,c9ff4600,c89cae80,0,...) at zfs_mount+0x42c
> vfs_donmount(c89efbc0,4000,0,c86c1790,cb6c0800,...) at vfs_donmount+0xc6d
> kernel_mount(cb7700b0,4000,0,0,1,...) at kernel_mount+0x6b
> parse_mount(cb7700e0,c1194498,0,1,0,...) at parse_mount+0x606
> vfs_mountroot(c13d95b0,4,c105c042,2bb,0,...) at vfs_mountroot+0x6cf
> start_init(0,c86c1d08,c105e94c,3db,0,...) at start_init+0x6a
> fork_exit(c0a42090,0,c86c1d08) at fork_exit+0x7f
> fork_trampoline() at fork_trampoline+0x8
> --- trap 0, eip =3D 0, esp =3D 0xc86c1d40, ebp =3D 0 ---
> db>=20
> _______________________________________________
> freebsd-current@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"

--maH1Gajj2nflutpK
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)

iEYEARECAAYFAlCzpAoACgkQC3+MBN1Mb4j9FQCfX/BKJvG1317xh1X9RQQaCRmb
FG0AoJTD3ObL+l6uWhI4ORT8GkSsGtIJ
=/qn9
-----END PGP SIGNATURE-----

--maH1Gajj2nflutpK--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20121126171658.GD3013>