====================================== | [ 11.486104][ T220] softirqs last disabled at (61236): release_sock (./include/linux/spinlock.h:353 net/core/sock.c:3858) | [ 11.486108][ T220] Preemption disabled at: | [ 11.486109][ T220] vprintk_emit (kernel/printk/printk.c:2471) | [ 11.486118][ T220] Tainted: [W]=WARN [ 11.486119][ T220] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 [ 11.486121][ T220] Call Trace: [ 11.486122][ T220] [ 11.486124][ T220] dump_stack_lvl (lib/dump_stack.c:94 lib/dump_stack.c:120) [ 11.486134][ T220] ? vprintk_emit (kernel/printk/printk.c:2471) [ 11.486136][ T220] __might_resched.cold (kernel/sched/core.c:9234) [ 11.486141][ T220] ? perf_trace_sched_switch (./include/linux/list.h:1037 (discriminator 3)) [ 11.486145][ T220] ? __kmalloc_noprof (./include/linux/sched/mm.h:317 mm/slub.c:4636 mm/slub.c:4974 mm/slub.c:5413 mm/slub.c:5439) [ 11.486150][ T220] __kmalloc_noprof (./include/linux/sched/mm.h:322 (discriminator 2) mm/slub.c:4636 (discriminator 2) mm/slub.c:4974 (discriminator 2) mm/slub.c:5413 (discriminator 2) mm/slub.c:5439 (discriminator 2)) [ 11.486152][ T220] ? alloc_buf.isra.0 (./include/linux/slab.h:995 drivers/char/virtio_console.c:429) [ 11.486159][ T220] ? do_raw_spin_unlock (./include/linux/instrumented.h:82 ./include/linux/atomic/atomic-instrumented.h:32 ./include/asm-generic/qspinlock.h:58 kernel/locking/spinlock_debug.c:101 kernel/locking/spinlock_debug.c:141) [ 11.486162][ T220] alloc_buf.isra.0 (./include/linux/slab.h:995 drivers/char/virtio_console.c:429) [ 11.486165][ T220] put_chars (drivers/char/virtio_console.c:1176) [ 11.486168][ T220] ? __send_to_port (drivers/char/virtio_console.c:654) [ 11.486172][ T220] ? validate_chain (kernel/locking/lockdep.c:159 kernel/locking/lockdep.c:191 kernel/locking/lockdep.c:3928) [ 11.486176][ T220] hvc_console_print (drivers/tty/hvc/hvc_console.c:177 (discriminator 2)) [ 11.486180][ T220] ? mark_usage (kernel/locking/lockdep.c:4690) [ 11.486182][ T220] ? __lock_acquire (kernel/locking/lockdep.c:5254) [ 11.486184][ T220] ? __lock_acquire (kernel/locking/lockdep.c:5254) [ 11.486188][ T220] ? hvc_write (drivers/tty/hvc/hvc_console.c:501) [ 11.486191][ T220] ? console_emit_next_record (kernel/printk/printk.c:3095 (discriminator 2) kernel/printk/printk.c:3182 (discriminator 2)) [ 11.486194][ T220] ? rcu_is_watching (./include/linux/context_tracking.h:128 (discriminator 3) kernel/rcu/tree.c:753 (discriminator 3)) [ 11.486197][ T220] ? lock_acquire (./include/trace/events/lock.h:23 (discriminator 22) kernel/locking/lockdep.c:5871 (discriminator 22)) [ 11.486201][ T220] console_emit_next_record (kernel/printk/printk.c:3183) [ 11.486205][ T220] ? devkmsg_read (./arch/x86/include/asm/atomic64_64.h:20) [ 11.486207][ T220] ? console_flush_one_record (./include/linux/rcupdate.h:314 (discriminator 2) ./include/linux/srcu.h:439 (discriminator 2) kernel/printk/printk.c:291 (discriminator 2) kernel/printk/printk.c:3246 (discriminator 2)) [ 11.486210][ T220] ? rcu_is_watching (./include/linux/context_tracking.h:128 (discriminator 3) kernel/rcu/tree.c:753 (discriminator 3)) [ 11.486212][ T220] ? lock_acquire (./include/trace/events/lock.h:23 (discriminator 22) kernel/locking/lockdep.c:5871 (discriminator 22)) [ 11.486216][ T220] console_flush_one_record (kernel/printk/printk.c:3268) [ 11.486220][ T220] ? console_emit_next_record (kernel/printk/printk.c:3150) [ 11.486222][ T220] ? __lock_acquire (kernel/locking/lockdep.c:5254) [ 11.486227][ T220] console_unlock (kernel/printk/printk.c:3350 kernel/printk/printk.c:3380 kernel/printk/printk.c:3420) [ 11.486230][ T220] ? console_flush_one_record (kernel/printk/printk.c:3316) [ 11.486232][ T220] ? rcu_is_watching (./include/linux/context_tracking.h:128 (discriminator 3) kernel/rcu/tree.c:753 (discriminator 3)) [ 11.486234][ T220] ? lock_acquire (./include/linux/srcutree.h:374 ./include/linux/srcu.h:541 ./include/linux/srcu.h:645 ./include/trace/events/lock.h:23 ./include/trace/events/lock.h:23 kernel/locking/lockdep.c:5871) [ 11.486238][ T220] ? __down_trylock_console_sem (kernel/printk/printk.c:334) [ 11.486239][ T220] ? vprintk_emit (kernel/printk/printk.c:2478) [ 11.486242][ T220] vprintk_emit (kernel/printk/printk.c:2479) [ 11.486245][ T220] ? wake_up_klogd_work_func (kernel/printk/printk.c:4603 (discriminator 126)) [ 11.486247][ T220] ? kasan_save_stack (mm/kasan/common.c:58) [ 11.486249][ T220] ? kasan_save_track (mm/kasan/common.c:78) [ 11.486251][ T220] ? __kasan_kmalloc (mm/kasan/common.c:398 mm/kasan/common.c:415) [ 11.486252][ T220] ? __kmalloc_cache_noprof (./include/linux/kasan.h:263 mm/slub.c:5563) [ 11.486253][ T220] ? packet_mc_add (./include/linux/slab.h:991 (discriminator 1) net/packet/af_packet.c:3729 (discriminator 1)) [ 11.486255][ T220] ? packet_setsockopt (net/packet/af_packet.c:3840) [ 11.486256][ T220] ? do_sock_setsockopt (net/socket.c:2397) [ 11.486261][ T220] _printk (kernel/printk/printk.c:2504) [ 11.486264][ T220] ? snapshot_read.cold (user.c:?) [ 11.486269][ T220] ? netdev_name (./include/linux/netdevice.h:5709 (discriminator 1)) [ 11.486273][ T220] ? __netdev_printk (net/core/dev.c:13148 (discriminator 2)) [ 11.486277][ T220] netdev_info (net/core/dev.c:13195 (discriminator 3)) [ 11.486279][ T220] ? netdev_notice (net/core/dev.c:13194) [ 11.486287][ T220] ? mutex_is_locked (./include/linux/instrumented.h:82 ./include/linux/atomic/atomic-instrumented.h:3188 kernel/locking/mutex.h:48 kernel/locking/mutex.c:65) [ 11.486289][ T220] __dev_set_promiscuity.cold (net/core/dev.c:9672 (discriminator 3)) [ 11.486292][ T220] netif_set_promiscuity (net/core/dev.c:9699) [ 11.486297][ T220] dev_set_promiscuity (net/core/dev_api.c:288) [ 11.486299][ T220] ? __asan_memset (mm/kasan/shadow.c:84 (discriminator 1)) [ 11.486302][ T220] packet_mc_add (net/packet/af_packet.c:3755) [ 11.486304][ T220] ? __might_fault (mm/memory.c:7482 (discriminator 5)) [ 11.486307][ T220] ? __might_fault (mm/memory.c:7482 (discriminator 5)) [ 11.486309][ T220] ? _copy_from_user (./include/linux/instrumented.h:146 ./include/linux/uaccess.h:184 lib/usercopy.c:18) [ 11.486314][ T220] packet_setsockopt (net/packet/af_packet.c:3840) [ 11.486318][ T220] ? packet_bind (net/packet/af_packet.c:3341) [ 11.486321][ T220] ? do_sock_getsockopt (net/socket.c:2484) [ 11.486326][ T220] ? sock_poll (net/socket.c:1514) [ 11.486330][ T220] ? rcu_is_watching (./include/linux/context_tracking.h:128 (discriminator 3) kernel/rcu/tree.c:753 (discriminator 3)) [ 11.486332][ T220] ? trace_irq_enable.constprop.0 (./include/trace/events/preemptirq.h:40 (discriminator 22)) [ 11.486337][ T220] do_sock_setsockopt (net/socket.c:2397) [ 11.486340][ T220] ? put_user_ifreq (./arch/x86/include/asm/compat.h:94 (discriminator 1)) [ 11.486342][ T220] ? __sys_bind (net/socket.c:1945 (discriminator 3) net/socket.c:1937 (discriminator 3) net/socket.c:1976 (discriminator 3)) [ 11.486345][ T220] ? __sys_bind_socket (net/socket.c:1945 (discriminator 3)) [ 11.486351][ T220] __sys_setsockopt (net/socket.c:2422) [ 11.486356][ T220] __x64_sys_setsockopt (net/socket.c:2428 net/socket.c:2425 net/socket.c:2425) [ 11.486358][ T220] ? trace_irq_enable.constprop.0 (./include/trace/events/preemptirq.h:40 (discriminator 22)) [ 11.486360][ T220] ? lockdep_hardirqs_on (kernel/locking/lockdep.c:4488) [ 11.486363][ T220] ? do_syscall_64 (arch/x86/entry/syscall_64.c:81 (discriminator 44)) [ 11.486366][ T220] do_syscall_64 (arch/x86/entry/syscall_64.c:61 arch/x86/entry/syscall_64.c:84) [ 11.486368][ T220] ? exc_page_fault (arch/x86/mm/fault.c:1489 (discriminator 3) arch/x86/mm/fault.c:1536 (discriminator 3)) [ 11.486370][ T220] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121) [ 11.486373][ T220] RIP: 0033:0x7f21ba9c62de [ 11.486377][ T220] Code: 55 48 63 c9 48 63 ff 45 89 c9 48 89 e5 48 83 ec 08 6a 2c e8 94 72 f7 ff c9 c3 66 90 f3 0f 1e fa 49 89 ca b8 36 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 0a c3 66 0f 1f 84 00 00 00 00 00 48 8b 15 e1 All code ======== 0: 55 push %rbp 1: 48 63 c9 movslq %ecx,%rcx 4: 48 63 ff movslq %edi,%rdi 7: 45 89 c9 mov %r9d,%r9d a: 48 89 e5 mov %rsp,%rbp d: 48 83 ec 08 sub $0x8,%rsp 11: 6a 2c push $0x2c 13: e8 94 72 f7 ff call 0xfffffffffff772ac 18: c9 leave 19: c3 ret 1a: 66 90 xchg %ax,%ax 1c: f3 0f 1e fa endbr64 20: 49 89 ca mov %rcx,%r10 23: b8 36 00 00 00 mov $0x36,%eax 28: 0f 05 syscall 2a:* 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax <-- trapping instruction 30: 77 0a ja 0x3c 32: c3 ret 33: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 3a: 00 00 3c: 48 rex.W 3d: 8b .byte 0x8b 3e: 15 .byte 0x15 3f: e1 .byte 0xe1 Code starting with the faulting instruction =========================================== 0: 48 3d 00 f0 ff ff cmp $0xfffffffffffff000,%rax 6: 77 0a ja 0x12 8: c3 ret 9: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 10: 00 00 12: 48 rex.W 13: 8b .byte 0x8b 14: 15 .byte 0x15 15: e1 .byte 0xe1 [ 11.486379][ T220] RSP: 002b:00007fffd2d22be8 EFLAGS: 00000246 ORIG_RAX: 0000000000000036 [ 11.486381][ T220] RAX: ffffffffffffffda RBX: 0000000000000005 RCX: 00007f21ba9c62de [ 11.486383][ T220] RDX: 0000000000000001 RSI: 0000000000000107 RDI: 0000000000000005 [ 11.486384][ T220] RBP: 00007fffd2d22d20 R08: 0000000000000010 R09: 000055c7f646f530 [ 11.486385][ T220] R10: 00007fffd2d22c60 R11: 0000000000000246 R12: 0000000000000001 [ 11.486385][ T220] R13: 000055c7f646f918 R14: 000055c7f646f690 R15: 0000000000000000 | [ 12.521908][ T220] softirqs last disabled at (69976): release_sock (./include/linux/spinlock.h:353 net/core/sock.c:3858) | [ 12.521911][ T220] Preemption disabled at: | [ 12.521912][ T220] vprintk_emit (kernel/printk/printk.c:2471) | [ 12.521921][ T220] Tainted: [W]=WARN [ 12.521922][ T220] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 [ 12.521923][ T220] Call Trace: [ 12.521925][ T220] [ 12.521926][ T220] dump_stack_lvl (lib/dump_stack.c:94 lib/dump_stack.c:120) [ 12.521932][ T220] ? vprintk_emit (kernel/printk/printk.c:2471) [ 12.521934][ T220] __might_resched.cold (kernel/sched/core.c:9234) [ 12.521938][ T220] ? perf_trace_sched_switch (./include/linux/list.h:1037 (discriminator 3)) [ 12.521942][ T220] ? __kmalloc_noprof (./include/linux/sched/mm.h:317 mm/slub.c:4636 mm/slub.c:4974 mm/slub.c:5413 mm/slub.c:5439) [ 12.521947][ T220] __kmalloc_noprof (./include/linux/sched/mm.h:322 (discriminator 2) mm/slub.c:4636 (discriminator 2) mm/slub.c:4974 (discriminator 2) mm/slub.c:5413 (discriminator 2) mm/slub.c:5439 (discriminator 2)) [ 12.521949][ T220] ? alloc_buf.isra.0 (./include/linux/slab.h:995 drivers/char/virtio_console.c:429) [ 12.521955][ T220] ? do_raw_spin_unlock (./include/linux/instrumented.h:82 ./include/linux/atomic/atomic-instrumented.h:32 ./include/asm-generic/qspinlock.h:58 kernel/locking/spinlock_debug.c:101 kernel/locking/spinlock_debug.c:141) [ 12.521958][ T220] alloc_buf.isra.0 (./include/linux/slab.h:995 drivers/char/virtio_console.c:429) [ 12.521962][ T220] put_chars (drivers/char/virtio_console.c:1176) [ 12.521964][ T220] ? __send_to_port (drivers/char/virtio_console.c:654) [ 12.521965][ T220] ? check_prev_add (kernel/locking/lockdep.c:3185) [ 12.521970][ T220] ? validate_chain (kernel/locking/lockdep.c:159 kernel/locking/lockdep.c:191 kernel/locking/lockdep.c:3928) [ 12.521974][ T220] hvc_console_print (drivers/tty/hvc/hvc_console.c:177 (discriminator 2)) [ 12.521978][ T220] ? mark_usage (kernel/locking/lockdep.c:4690) [ 12.521980][ T220] ? __lock_acquire (kernel/locking/lockdep.c:5254) [ 12.521982][ T220] ? __lock_acquire (kernel/locking/lockdep.c:5254) [ 12.521986][ T220] ? hvc_write (drivers/tty/hvc/hvc_console.c:501) [ 12.521988][ T220] ? lock_acquire.part.0 (kernel/locking/lockdep.c:5908 (discriminator 2)) [ 12.521992][ T220] ? lock_acquire (./include/trace/events/lock.h:23 (discriminator 22) kernel/locking/lockdep.c:5871 (discriminator 22)) [ 12.521996][ T220] console_emit_next_record (kernel/printk/printk.c:3183) [ 12.522000][ T220] ? devkmsg_read (./arch/x86/include/asm/atomic64_64.h:20) [ 12.522002][ T220] ? console_flush_one_record (./include/linux/rcupdate.h:314 (discriminator 2) ./include/linux/srcu.h:439 (discriminator 2) kernel/printk/printk.c:291 (discriminator 2) kernel/printk/printk.c:3246 (discriminator 2)) [ 12.522005][ T220] ? rcu_is_watching (./include/linux/context_tracking.h:128 (discriminator 3) kernel/rcu/tree.c:753 (discriminator 3)) [ 12.522008][ T220] ? lock_acquire (./include/trace/events/lock.h:23 (discriminator 22) kernel/locking/lockdep.c:5871 (discriminator 22)) [ 12.522012][ T220] console_flush_one_record (kernel/printk/printk.c:3268) [ 12.522016][ T220] ? console_emit_next_record (kernel/printk/printk.c:3150) [ 12.522018][ T220] ? __lock_acquire (kernel/locking/lockdep.c:5254) [ 12.522023][ T220] console_unlock (kernel/printk/printk.c:3350 kernel/printk/printk.c:3380 kernel/printk/printk.c:3420) [ 12.522026][ T220] ? console_flush_one_record (kernel/printk/printk.c:3316) [ 12.522028][ T220] ? rcu_is_watching (./include/linux/context_tracking.h:128 (discriminator 3) kernel/rcu/tree.c:753 (discriminator 3)) [ 12.522030][ T220] ? lock_acquire (./include/linux/srcutree.h:374 ./include/linux/srcu.h:541 ./include/linux/srcu.h:645 ./include/trace/events/lock.h:23 ./include/trace/events/lock.h:23 kernel/locking/lockdep.c:5871) [ 12.522034][ T220] ? __down_trylock_console_sem (kernel/printk/printk.c:334) [ 12.522035][ T220] ? vprintk_emit (kernel/printk/printk.c:2478) [ 12.522038][ T220] vprintk_emit (kernel/printk/printk.c:2479) [ 12.522041][ T220] ? wake_up_klogd_work_func (kernel/printk/printk.c:4603 (discriminator 126)) [ 12.522044][ T220] ? __lock_acquire (kernel/locking/lockdep.c:5254) [ 12.522048][ T220] _printk (kernel/printk/printk.c:2504) [ 12.522051][ T220] ? snapshot_read.cold (user.c:?) [ 12.522053][ T220] ? lock_acquire.part.0 (kernel/locking/lockdep.c:5908 (discriminator 2)) [ 12.522057][ T220] ? rcu_is_watching (./include/linux/context_tracking.h:128 (discriminator 3) kernel/rcu/tree.c:753 (discriminator 3)) [ 12.522058][ T220] ? netdev_name (./include/linux/netdevice.h:5709 (discriminator 1)) [ 12.522062][ T220] ? __netdev_printk (net/core/dev.c:13148 (discriminator 2)) [ 12.522066][ T220] netdev_info (net/core/dev.c:13195 (discriminator 3)) [ 12.522068][ T220] ? netdev_notice (net/core/dev.c:13194) [ 12.522070][ T220] ? lockdep_hardirqs_on_prepare.part.0 (kernel/locking/lockdep.c:470 (discriminator 2) kernel/locking/lockdep.c:4427 (discriminator 2)) [ 12.522072][ T220] ? _raw_spin_unlock_irqrestore (./include/linux/spinlock_api_smp.h:211 (discriminator 1) kernel/locking/spinlock.c:221 (discriminator 1)) [ 12.522077][ T220] ? ww_mutex_lock (kernel/locking/mutex.c:934) [ 12.522079][ T220] ? lock_acquire.part.0 (kernel/locking/lockdep.c:5908 (discriminator 2)) [ 12.522081][ T220] ? ref_tracker_alloc (lib/ref_tracker.c:283) [ 12.522084][ T220] ? packet_release (./include/linux/netdevice.h:4548 ./include/linux/netdevice.h:4565 ./include/linux/netdevice.h:4561 net/packet/af_packet.c:3176) [ 12.522086][ T220] ? __fput (fs/file_table.c:512) [ 12.522090][ T220] ? mutex_is_locked (./include/linux/instrumented.h:82 ./include/linux/atomic/atomic-instrumented.h:3188 kernel/locking/mutex.h:48 kernel/locking/mutex.c:65) [ 12.522092][ T220] __dev_set_promiscuity.cold (net/core/dev.c:9672 (discriminator 3)) [ 12.522096][ T220] netif_set_promiscuity (net/core/dev.c:9699) [ 12.522101][ T220] dev_set_promiscuity (net/core/dev_api.c:288) [ 12.522104][ T220] packet_release (net/packet/af_packet.c:3807 net/packet/af_packet.c:3181) [ 12.522108][ T220] ? packet_set_ring (net/packet/af_packet.c:652) [ 12.522111][ T220] ? rwsem_down_write_slowpath (./include/linux/list.h:170) [ 12.522116][ T220] __sock_release (net/socket.c:735) [ 12.522119][ T220] sock_close (net/socket.c:1526 (discriminator 1)) [ 12.522121][ T220] __fput (fs/file_table.c:512) [ 12.522126][ T220] fput_close_sync (fs/file_table.c:617) [ 12.522128][ T220] ? alloc_file_clone (fs/file_table.c:479) [ 12.522134][ T220] ? do_raw_spin_unlock (./include/linux/instrumented.h:82 ./include/linux/atomic/atomic-instrumented.h:32 ./include/asm-generic/qspinlock.h:58 kernel/locking/spinlock_debug.c:101 kernel/locking/spinlock_debug.c:141) [ 12.522138][ T220] __x64_sys_close (fs/open.c:1560 fs/open.c:1545 fs/open.c:1545) [ 12.522141][ T220] do_syscall_64 (arch/x86/entry/syscall_64.c:61 arch/x86/entry/syscall_64.c:84) [ 12.522144][ T220] ? exc_page_fault (arch/x86/mm/fault.c:1489 (discriminator 3) arch/x86/mm/fault.c:1536 (discriminator 3)) [ 12.522147][ T220] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121) [ 12.522149][ T220] RIP: 0033:0x7f21ba93d54e [ 12.522153][ T220] Code: 4d 89 d8 e8 b4 bd 00 00 4c 8b 5d f8 41 8b 93 08 03 00 00 59 5e 48 83 f8 fc 74 11 c9 c3 0f 1f 80 00 00 00 00 48 8b 45 10 0f 05 c3 83 e2 39 83 fa 08 75 e7 e8 03 ff ff ff 0f 1f 00 f3 0f 1e fa All code ======== 0: 4d 89 d8 mov %r11,%r8 3: e8 b4 bd 00 00 call 0xbdbc 8: 4c 8b 5d f8 mov -0x8(%rbp),%r11 c: 41 8b 93 08 03 00 00 mov 0x308(%r11),%edx 13: 59 pop %rcx 14: 5e pop %rsi 15: 48 83 f8 fc cmp $0xfffffffffffffffc,%rax 19: 74 11 je 0x2c 1b: c9 leave 1c: c3 ret 1d: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 24: 48 8b 45 10 mov 0x10(%rbp),%rax 28: 0f 05 syscall 2a:* c9 leave <-- trapping instruction 2b: c3 ret 2c: 83 e2 39 and $0x39,%edx 2f: 83 fa 08 cmp $0x8,%edx 32: 75 e7 jne 0x1b 34: e8 03 ff ff ff call 0xffffffffffffff3c 39: 0f 1f 00 nopl (%rax) 3c: f3 0f 1e fa endbr64 Code starting with the faulting instruction =========================================== 0: c9 leave 1: c3 ret 2: 83 e2 39 and $0x39,%edx 5: 83 fa 08 cmp $0x8,%edx 8: 75 e7 jne 0xfffffffffffffff1 a: e8 03 ff ff ff call 0xffffffffffffff12 f: 0f 1f 00 nopl (%rax) 12: f3 0f 1e fa endbr64 [ 12.522155][ T220] RSP: 002b:00007fffd2d22d50 EFLAGS: 00000202 ORIG_RAX: 0000000000000003 [ 12.522157][ T220] RAX: ffffffffffffffda RBX: 000055c7f646f690 RCX: 00007f21ba93d54e [ 12.522158][ T220] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000005 [ 12.522159][ T220] RBP: 00007fffd2d22d60 R08: 0000000000000000 R09: 0000000000000000 [ 12.522160][ T220] R10: 0000000000000000 R11: 0000000000000202 R12: 0000000000000000 Finger prints: release_sock:vprintk_emit:dump_stack_lvl:__kmalloc_noprof:put_chars