In lwlib/lwlib-Xlw.c:xlw_update_one_widget, we have
#ifdef LWLIB_MENUBARS_LUCID
else if (class == xlwMenuWidgetClass)
{
XlwMenuWidget mw;
Arg al [1];
if (XtIsShell (widget))
mw = (XlwMenuWidget)((CompositeWidget)widget)->composite.children [0];
else
mw = (XlwMenuWidget)widget;
XtSetArg (al [0], XtNmenu, val);
XtSetValues (widget, al, 1);
}
#endif
Note how the code carefully creates a mw widget, and then ignores it.
Perhaps the XtSetValues call should be
XtSetValues (mw, al, 1);