[srslte-users] ue crash on multiple simultaneous connections.
J Giovatto
jgiovatto at adjacentlink.com
Thu Sep 23 22:58:30 UTC 2021
Hi folks,
Here is the crash dump for a ue.
This is repeatable when 5 or more ues, try to connect simultaneously,
(start 5 UE's then start the enb)
Found Cell: Mode=FDD, PCI=1, PRB=50, Ports=1, CFO=0.0 KHz
Found PLMN: Id=00101, TAC=7
Random Access Transmission: seq=14, tti=7541, ra-rnti=0x2
Random Access Transmission: seq=41, tti=7561, ra-rnti=0x2
Random Access Transmission: seq=17, tti=7581, ra-rnti=0x2
Random Access Transmission: seq=8, tti=7601, ra-rnti=0x2
Random Access Transmission: seq=13, tti=7621, ra-rnti=0x2
Random Access Transmission: seq=27, tti=7711, ra-rnti=0x2
Random Access Complete. c-rnti=0x58, ta=0
RRC Connected
RRC Connected
/home/jgiovatto/Devel/LTE/srs/srsRAN-emane/lib/include/srsran/adt/circular_buffer.h:547:
Dynamic resizes not supported when circular buffer is not empty
Stack trace (most recent call last) in thread 826286:
#20 Object "", at 0xffffffffffffffff, in
#19 Source "../sysdeps/unix/sysv/linux/x86_64/clone.S", line 95, in
__clone [0x7fdf59f294c2]
#18 Source
"/usr/src/debug/glibc-2.32-10.fc33.x86_64/nptl/pthread_create.c", line
463, in start_thread [0x7fdf5add93f8]
460: ret = (void*) (uintptr_t) start (pd->arg);
461: }
462: else
> 463: ret = pd->start_routine (pd->arg);
464: THREAD_SETMEM (pd, result, ret);
465: }
#17 Source
"/home/jgiovatto/Devel/LTE/srs/srsRAN-emane/lib/include/srsran/common/threads.h",
line 111, in thread_function_entry [0xc59291]
108: static void* thread_function_entry(void* _this)
109: {
110: pthread_setname_np(pthread_self(),
((thread*)_this)->name.c_str());
> 111: ((thread*)_this)->run_thread();
112: return NULL;
113: }
#16 Source
"/home/jgiovatto/Devel/LTE/srs/srsRAN-emane/srsue/src/stack/ue_stack_lte.cc",
line 332, in run_thread [0xd0f67f]
329: void ue_stack_lte::run_thread()
330: {
331: while (running) {
> 332: task_sched.run_next_task();
333: }
334: }
#15 Source
"/home/jgiovatto/Devel/LTE/srs/srsRAN-emane/lib/include/srsran/common/task_scheduler.h",
line 81, in run_next_task [0xd12754]
78: srsran::move_task_t task{};
79: if (external_tasks.wait_pop(&task) >= 0) {
80: task();
> 81: run_all_internal_tasks();
82: return true;
83: }
84: run_all_internal_tasks();
#14 Source
"/home/jgiovatto/Devel/LTE/srs/srsRAN-emane/lib/include/srsran/common/task_scheduler.h",
line 108, in run_all_internal_tasks [0xd127f0]
105: // Note: Using a deque because tasks can enqueue new
tasks, which would lead to
106: // reference invalidation in case of vector
107: while (not internal_tasks.empty()) {
> 108: internal_tasks.front()();
109: internal_tasks.pop_front();
110: }
111: }
#13 Source
"/home/jgiovatto/Devel/LTE/srs/srsRAN-emane/lib/include/srsran/adt/move_callback.h",
line 178, in operator() [0xd1448d]
175: return *this;
176: }
177:
> 178: R operator()(Args... args) const noexcept { return
oper_ptr->call(&buffer, std::forward<Args>(args)...); }
179:
180: bool is_empty() const { return oper_ptr == &empty_table; }
181: bool is_in_small_buffer() const { return
oper_ptr->is_in_small_buffer(); }
#12 Source
"/home/jgiovatto/Devel/LTE/srs/srsRAN-emane/lib/include/srsran/adt/move_callback.h",
line 101, in call [0xd8efdc]
98: {
99: public:
100: constexpr heap_table_t() = default;
> 101: R call(void* src, Args... args) const final { return
(**static_cast<FunT**>(src))(std::forward<Args>(args)...); }
102: void move(void* src, void* dest) const final
103: {
104: *static_cast<FunT**>(dest) = *static_cast<FunT**>(src);
#11 Source
"/home/jgiovatto/Devel/LTE/srs/srsRAN-emane/srsue/src/stack/rrc/rrc.cc",
line 1675, in operator() [0xd885a1]
1672: case dl_ccch_msg_type_c::c1_c_::types::rrc_conn_setup: {
1673: transaction_id =
c1->rrc_conn_setup().rrc_transaction_id;
1674: rrc_conn_setup_s conn_setup_copy = c1->rrc_conn_setup();
>1675: task_sched.defer_task([this, conn_setup_copy]() {
handle_con_setup(conn_setup_copy); });
1676: break;
1677: }
1678: case dl_ccch_msg_type_c::c1_c_::types::rrc_conn_reest: {
#10 Source
"/home/jgiovatto/Devel/LTE/srs/srsRAN-emane/srsue/src/stack/rrc/rrc.cc",
line 2543, in handle_con_setup [0xd8c559]
2540: srsran::console("RRC Connected\n");
2541:
2542: // Apply the Radio Resource configuration
>2543:
apply_rr_config_dedicated(&setup.crit_exts.c1().rrc_conn_setup_r8().rr_cfg_ded);
2544:
2545: nas->set_barring(srsran::barring_t::none);
#9 Source
"/home/jgiovatto/Devel/LTE/srs/srsRAN-emane/srsue/src/stack/rrc/rrc.cc",
line 2422, in apply_rr_config_dedicated [0xd8bff0]
2419: }
2420: for (uint32_t i = 0; i <
cnfg->srb_to_add_mod_list.size(); i++) {
2421: // TODO: handle SRB modification
>2422: add_srb(cnfg->srb_to_add_mod_list[i]);
2423: }
2424: for (uint32_t i = 0; i <
cnfg->drb_to_release_list.size(); i++) {
2425: release_drb(cnfg->drb_to_release_list[i]);
#8 Source
"/home/jgiovatto/Devel/LTE/srs/srsRAN-emane/srsue/src/stack/rrc/rrc.cc",
line 2572, in add_srb [0xd8c85a]
2570: // Setup RLC
2571: if (srb_cnfg.rlc_cfg_present) {
>2572: rlc->add_bearer(srb_cnfg.srb_id,
make_rlc_config_t(srb_cnfg));
2573: }
2574:
2575: // Setup MAC
#7 Source
"/home/jgiovatto/Devel/LTE/srs/srsRAN-emane/lib/src/upper/rlc.cc", line
480, in add_bearer [0x106d1c4]
478: // configure and add to array
479: if (cnfg.rlc_mode != rlc_mode_t::tm and
rlc_array.find(lcid) != rlc_array.end()) {
> 480: if (not rlc_array.at(lcid)->configure(cnfg)) {
481: logger.error("Error configuring RLC entity.");
482: goto delete_and_exit;
483: }
#6 Source
"/home/jgiovatto/Devel/LTE/srs/srsRAN-emane/lib/src/upper/rlc_am_lte.cc",
line 159, in configure [0x1086329]
156: return false;
157: }
158:
> 159: if (not tx.configure(cfg)) {
160: logger.error("Error configuring bearer (TX)");
161: return false;
162: }
#5 Source
"/home/jgiovatto/Devel/LTE/srs/srsRAN-emane/lib/src/upper/rlc_am_lte.cc",
line 322, in configure [0x1086eaa]
319:
poll_retx_timer.set(static_cast<uint32_t>(cfg.t_poll_retx),
[this](uint32_t timerid) { timer_expired(timerid); });
320: }
321:
> 322: tx_sdu_queue.resize(cfg_.tx_queue_length);
323:
324: tx_enabled = true;
#4 Source
"/home/jgiovatto/Devel/LTE/srs/srsRAN-emane/lib/include/srsran/upper/byte_buffer_queue.h",
line 60, in resize [0x107be12]
58: bool try_read(unique_byte_buffer_t* msg) { return
queue.try_pop(*msg); }
59:
> 60: void resize(uint32_t capacity) {
queue.set_size(capacity); }
61: uint32_t size() { return (uint32_t)queue.size(); }
62: uint32_t get_n_sdus() { return n_sdus; }
#3 Source
"/home/jgiovatto/Devel/LTE/srs/srsRAN-emane/lib/include/srsran/adt/circular_buffer.h",
line 601, in set_size [0x107bfb8]
598: explicit dyn_blocking_queue(size_t size, PushingCallback
push_callback = {}, PoppingCallback pop_callback = {}) :
599: base_t(push_callback, pop_callback, size)
600: {}
> 601: void set_size(size_t size) {
base_t::circ_buffer.set_size(size); }
602:
603: template <typename F>
604: bool apply_first(const F& func)
#2 Source
"/home/jgiovatto/Devel/LTE/srs/srsRAN-emane/lib/include/srsran/adt/circular_buffer.h",
line 547, in set_size [0x107f732]
545: void set_size(size_t sz)
546: {
> 547: srsran_assert(base_t::empty() or sz == base_t::size(),
548: "Dynamic resizes not supported when
circular buffer is not empty");
549: base_t::buffer.resize(sz);
550: }
#1 Source "/usr/src/debug/glibc-2.32-10.fc33.x86_64/stdlib/abort.c",
line 79, in abort [0x7fdf59e4e8a3]
76: stage = 0;
77: __libc_lock_unlock_recursive (lock);
78:
> 79: raise (SIGABRT);
80:
81: __libc_lock_lock_recursive (lock);
82: stage = save_stage + 1;
#0 Source "../sysdeps/unix/sysv/linux/raise.c", line 50, in raise
[0x7fdf59e659e5]
Aborted (Signal sent by tkill() 826270 0)
Aborted (core dumped)
Best
Joe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <https://lists.srsran.com/pipermail/srsran-users/attachments/20210923/b619ab04/attachment.sig>
More information about the srsran-users
mailing list